Die Community zu .NET und Classic VB.
Menü

Ausschreibung: GetGlyphOutline

 von 

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:
  • 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:

  1. 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.

  2. 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 25Punkte für die korrekte Anwendung von GetGlyphOutline unter NT/W2000/XP.
0 bis 50Punkte 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 15Punkte für eleganten und sauberen Programmierstil (das Beispielprogramm setzt hier keine Maßstäbe).
0 bis 10Punkte 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 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.

Einsendung von Stefan Maag 

Einsendung von Guido Beckmann 

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