# Thursday, October 27, 2005

Kein Vergleich der Funktionalität, sondern der Performance und des Speicherbedarfs von Microsoft Office 2003 im Vergleich zu Open Office 2.0:

Performance analysis of OpenOffice and MS Office by ZDNet's George Ou

Au Backe, da sieht Open Office 2.0 aber richtig schlecht aus. Es braucht deutlich länger und verwendet mehr Speicher.

Vielleicht findet sich ja die Zeit, daß ich selber mal damit rumspiele. Technische Dokumentation und Open Source geistert bei uns schon länger als Thema rum. Unter dem Gesichtspunkt könnte Open Office interessante Möglichkeiten bieten.

Admin | TD
Thursday, October 27, 2005 2:27:58 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [1]  | 
# Wednesday, October 26, 2005

Die meisten Zeichnungen, die im SPCat verwendet werden sollen, liegen als Schwarz-Weiß-Grafik im Tiff-Format vor. Um diese Grafiken aufzubereiten habe ich in C# eine .NET Applikation "TiffSPCat" geschrieben. Unter anderem werden dabei Gif-Grafiken für die Bildschirmdarstellung erzeugt. Da in der Ausgangs-Grafik keine Farben vorkommen, werden die Gif-Grafiken mit einer festen Palette von 256 Graustufen erzeugt.
Inzwischen ist TiffSPCat deutlich flexibler und erlaubt auch die Konvertierung anderer Pixel-Formate. Diese müssen nicht notwendig in Schwarz-Weiß oder als Graustufen vorliegen. Also kann ich nicht mit einer Graustufen-Palette bei den Gifs arbeiten.
Der naheliegende Weg wäre also, einfach im System.Drawing.Imaging Namensraum den Gif Encoder auszuwählen und damit auf der erzeugten Bitmap die Save Methode aufzurufen. GDI+ wird es schon richten.
Bei Ausgangs-Grafiken mit wenigen Farben, also einer typischen technischen Zeichnung, sieht das Ergebnis passabel aus und ich war zunächst zufrieden.
Leider störte dann bei der weiter Verwendung der Gif-Grafiken deren Transparenz. Bei den Grafiken mit der selbst erzeugten, festen Graustufen-Palette waren die Gif-Grafiken nicht transparent. Also doch weiter in den Eingeweiden von GDI+ und dem .NET Wrapper System.Drawing.Imaging stöbern.

Als erstes fällt auf, daß immer eine Standard-Palette mit 256 Farben verwendet wird. Die Palette kann man in der GDI+ FAQ Creating Transparent GIF Images von Bob Powell schön sehen. Es gibt keine Möglichkeit über zusätzliche Parameter eine optimierte, adaptive Palette erzeugen zu lassen. Schade, also von Hand die Palette erzeugen. Aber erstmal Google fragen, keine Räder neu erfinden.
Das Beispiel aus diesem MSDN Artikel Optimizing Color Quantization for ASP.NET Images quantisiert mit einem Octree Algorithmus die Echtfarben auf eine optimierte Palette. Mit ein paar kleinen Veränderungen konnte ich den Quelltext in TiffSPCat einbauen. Die erzeugten Paletten sehen gleich viel sinnvoller und die dazugehörigen Gif-Grafiken gleich viel besser aus.

Trotzdem blieb eine Farbe in dem erzeugten Gif transparent. Jetzt habe ich aber Kontrolle über die verwendete Palette. Der letzte Schritt klärt sich dann mit diesem Knowledge Base Artikel KB319061, How to save a .gif file with a new color table by using Visual C# .NET. Die erste Farbe in der Palette mit einem Alpha Wert gleich Null, wird transparent. Also alle Alpha Werte auf 255 setzen:

// Palette von der Bitmap holen.
ColorPalette pal = this.activeBitmap.Palette;

// Alpha auf 255 setzen.
for(int i = 0; i < pal.Entries.Length; i++)
{
Color col = pal.Entries[i];
pal.Entries[i] = Color.FromArgb(255, col.R, col.G, col.B);
}

// Palette zuweisen.
this.activeBitmap.Palette = pal;

Die fertige Bitmap im PixelFormat.Format8bppIndexed und allen Alpha Werten ungleich Null wird dann mit dem Gif Encoder von GDI+ ohne Transparenz gespeichert.

Wednesday, October 26, 2005 11:18:36 AM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Tuesday, October 18, 2005

In unserem Ersatzteilkatalog SPCat ist die Navigation in der Hierarchie der Ersatzteile sehr wichtig. Unter anderem besteht die Möglichkeit über graphische Links in einer Baugruppenzeichnung zu entsprechenden Unterteilen zu  springen. Diese Links in der Zeichnung werden zur Laufzeit in die Graphik gezeichnet.

Der aktuelle SPCat 6.5 ist mit Visual Foxpro 8 programmiert. Bis zu dieser Version ist Visual Foxpro  sehr limitiert in den Möglichkeiten zur Modifikation und Darstellung von Graphiken. Deswegen wurde die Darstellung der verlinkten Zeichnungen über eine ActiveX Komponente realisiert. Diese Komponente ist in Visual Basic 6 programmiert.

Mit Visual Foxpro 9 ist der Zugriff auf GDI+, der Windows Graphik Schnittstelle, sinnvoll möglich. Damit können modernere Bildformate geladen werden, unter anderem auch PNG Bilder. Alle grundlegenden graphischen Funktionen stehen zur Verfügung. Es ist aber nicht einfach möglich das Ergebnis dieser Manipulationen zusammen mit anderen Visual Foxpro Bildschirmelement darzustellen. Zu grundlegend anders ist die Art, wie Visual Foxpro seine Ausgabe erzeugt.

Craig Boyd hat einen sehr hilfreichen Artikel "GDI+ on VFP 9 Forms: Solving the Paint Problem" in FoxTalk 2.0 veröffentlicht. Die Lösung besteht im Wesentlichen darin, die Windows Ereignisse abzufangen und mit GDI+ das erzeugte Bild innerhalb von Visual Foxpro selbst zu zeichnen. Der Nachteil ist, daß in häufig aufgerufenen Ereignissen die eigene Logik zusätzlich mitläuft. Deswegen wird der zu zeichnenende Ausschnitt des Bildes mit allen Links zwischengespeichert und nur dieses Ergebnis gezeichnet (double buffer). Lediglich sich ändernde Teile, wie der Hovereffekt und Tooltips werden neu erzeugt.
Der Vorteil liegt darin, daß man die volle Kontrolle über die Ausgabe hat und Effekte möglich sind, die bisher weder Visual Foxpro noch reines Visual Basic 6 konnte.

Das Ergebnis sieht besser als die bisherige Lösung aus und eine weitere externe Abhängigkeit ist aus unserem elektronischen Ersatzteilkatalog verbannt. Ich bin jedesmal froh, wenn ich VB 6 Ballast abwerfen kann.

Tuesday, October 18, 2005 1:40:36 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Thursday, October 13, 2005

Ich habe mich entschieden, dieses Blog in deutsch zu schreiben. Mein Englisch ist nicht gut genug Zusammenhänge sinnvoll darzustellen. Außerdem sind die meisten unserer (potentiellen) Kunden auch aus dem deutschsprachigem Raum.
Vielleicht wird der eine oder andere Eintrag zusätzlich als englische Version erscheinen.
Thursday, October 13, 2005 12:53:57 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Wednesday, October 12, 2005

Hallo,

mein Name ist Christian Deger. Ich bin hier bei der CPTec GmbH im weitesten Sinne für die IT zuständig. Da gehört auch mal die Installation einer Blog-Software dazu. Das ist hiermit erledigt.

Die administrativen Aufgaben innerhalb von CPTec dürfte aber niemanden interessieren. Deswegen soll es in diesem Blog eher um die Themen gehen, die mit unserer Hauptaufgabe, der technischen Dokumentation zu tun haben:

  • Einsatz von Redaktionssystemen (u.a. Word und Framemaker)
  • Einsatz von Grafiktools (u.a. Corel und Adobe)
  • Technische Dokumentation im Internet
  • Content Management
  • Software Hilfe
  • Elektronische Ersatzteilkataloge
Über die Jahre hat es sich ergeben, daß wir auch für unsere Kunden Webseiten erstellen und diese zum Teil auch bei uns hosten. Dafür haben wir eigene Tools geschrieben. Auch andere interne Aufgaben lösen wir gerne mit eigener Software. Letztes Beispiel ist unser dateibasiertes Backup mit Unterstützung für externe Festplatten: CPTec Backup.

Auch dieses Blog hat einen Standard-Disclaimer "spreche nicht für die ganze Firma". Ich bin bezüglich keines Themas der Pressesprecher von CPTec. Ich schreibe hier im Sinne und im Auftrag von CPTec, aber ohne direkte Kontrolle. Im Zweifelsfall hat mein Arbeitgeber das letzte Wort und ich werde zurückrudern.
Dennoch soll es wirklich um Dinge gehen, die mit meinem Job zu tun haben. So gesehen gehört dieses Blog jetzt zu meinem Job.


Wednesday, October 12, 2005 7:46:50 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  |