Ausschreibung: GetGlyphOutline
von ActiveVB-Team
Beschreibung
Zielsetzung
Zielsetzung ist die Verwendung des API-Befehls GetGlyphOutline, um die Kontur von True Type Fonts zu ermitteln. Diese soll in Polygonzüge umgerechnet werden, so dass sie per HPGL an eine Fräsmaschine übergeben werden können.
Kurzinfo
- Titel: GetGlyphOutline
- Ausschreibungsbeginn: 17.12.2002
- Einsendeschluß: 21.01.2003
- Auftraggeber: Roland Christ
- Jury: K. Langbein, Götz Reinecke, Roland Christ
- Preisgeld: 2 * 20 Euro (siehe Kommentar des Auftraggebers)
Aufgabenstellung
Die folgenden Aufgaben müssen unter VB5 oder VB6 (nicht VB .NET) gelöst werden:
-
Die korrekte und fehlerlose Anwendung der API-Funktion GetGlyphOutline um den Datensatz zur Beschreibung der Kontur zu erhalten.
Der Aufruf von GetGlyphOutline soll sowohl unter Windows 95/98/ME als auch unter Windows NT/W2000/XP funktionieren.
-
Interpretation der Daten ohne Umweg über Festplatte (d.h. auslesen aus dem RAM) und Umsetzung in eine Serie von Polygonzügen, die per Line-Befehl (VB) oder per API-Befehl LineTo, bzw. MoveTo oder per API-Befehl Polygon/Polyline auf einer Picturebox ausgegeben werden können.
Die im Datensatz vorhandenen Splines müssen korrekt interpretiert werden und sollen bei einer Fontgröße von 300 mit der Kontur eines Zeichens in einem VB-Label möglichst gut übereinstimmen.
Hilfestellung
Auf den Webseiten von Microsoft können 2 Beispiele in der Sprache C++ (Sourcecode) gefunden werden, welche die gestellte Aufgabe teilweise erfüllen. Eine Beschreibung des Formates der Daten, die man per GetGlyphOutline erhält finden sich ebenfalls bei MS. Weitere Informationen zum Thema finden sich in der MSDN, bzw. Win32SDK.hlp
Der Sourcecode eines VB-Programms, welches die Aufgabe teilweise erfüllt, wird von ActiveVB (Autor K. Langbein) zur Verfügung gestellt. Hier funktioniert der Aufruf von GetGlyphOutline nicht unter NT/W2000/XP und die Auswertung der Splines ist nicht fehlerfrei.
Ermittlung des Gewinners
Es werden alle Einsendungen ausgewertet, die bis zum Einsendeschluss eingegangen sind. Der Gewinnder wird duch die Vergabe von Punkten ermittelt. Jedes der 3 Mitglieder der der Jury vergibt 0-100 Punkte.
Hiervon werden vergeben:
0 bis 25 | Punkte für die korrekte Anwendung von GetGlyphOutline unter NT/W2000/XP. |
0 bis 50 | Punkte für die fehlerfreie Interpretation der Splines (50 Punkte werden vergeben, wenn alle Zeichen des Zeichensatztes Times Roman korrekt dargestellt werden. Der Font TypoUpright BT (TYPOUPRN.TTF) kann zur Kontrolle des Ergebnisses ebenfalls herangezogen werden.) |
0 bis 15 | Punkte für eleganten und sauberen Programmierstil (das Beispielprogramm setzt hier keine Maßstäbe). |
0 bis 10 | Punkte für ausführliche Kommentierung. |
Die Verwendung von weiteren DLLs neben Gdi32.dll und Kernel32.dll (bzw. den gebräuchlichen System-DLLs), Controls (OCX) oder Zusatzprogrammen ist unzulässig.
Einsendungen müssen per Email an Kopfgeld@ActiveVB.de gesandt werden.
Das Thema darf im Forum diskutiert werden, Einsendungen werden jedoch bis zum Einsendeschluß geheimgehalten.
Einsendungen von VB-Sourcecode, der auf anderen Websites (weltweit) öffentlich zugänglich ist, oder in Büchern/CD veröffentlicht wurde, sind ungültig.
Preisgeld
Das Preisgeld beträgt 20 Euro und wird per Überweisung an den Gewinner ausgezahlt.
Anmerkung
Die Aufgabe soll nicht mit alternativen Methoden, z.B. Vektorisierung von Bitmaps gelöst werden.
Die 1. Version dieser Ausschreibung wurde bereits am 17.12.02 während der sog. Forumsnacht veröffentlicht. Dies führte jedoch zu keinem Ergebnis.
Alle Einsendungen dürfen nach Einsendeschluß von ActiveVB.de veröffentlicht werden.
Lösung
Wir haben zu dieser Ausschreibungen zwei Einsendungen erhalten.
Beide waren derart gut, dass die Jury beide Einsender (Guido Beckmann und Stefan Maag) als Gewinner kürte.
Roland Christ war so freundlich und stellte auch noch das Preisgeld für den zweiten ersten Platz bereit, wodurch diese außergewöhnliche Entscheidung erst möglich wurde.
Kommentar des Auftraggebers
Guido Beckmann, Stefan Maag was Ihr Beide hier programmiert habt, da fehlen mir glatt die Worte.
Das ist nicht nur "Klasse", dass ist SUPER.
Daher möchte ich mich an dieser Stelle ganz herzlich für Eure Teilnahme an dieser Ausschreibung bedanken.
Beide Programme bieten schon einiges mehr als ich erwartet habe, das Eine mit diesen, das Andere mit jenen Features.
Ihr habt's mir nicht leicht gemacht, oder? Hm, eigentlich doch. ;-) Bei zwei solch hochkarätigen Programmen, da gibts doch nur einen Gewinner:
Und das seid ihr Beide.
Nochmals, Hut ab, für diese tolle Leistung und die Zeit die Ihr investiert habt (und die ganze Zeit kein Bierchen beim Programmieren).
Natürlich geht mein Dank auch an das gesamte ActiveVB-Team, insbesondere an Klaus Langbein der das Ganze gemanagt hat, sowie an Götz Reinecke (Mitglied der Jury).
In diesem Sinne verbleib ich mal (vielleicht) bis zur nächsten Ausschreibung.
Mit allerbesten Grüßen
Roland