Ich versuche, mich dem Thema path und region zu nähern. Die Doku erwähnt den Befehl "GrSetPath", der in <graphics.h> aber nicht enthalten ist. Fehlt er nur in meiner Include-Datei?
-
-
Es gibt auf GitHub weder in der C-, noch in der ASM-Variante der Include-Datei ein „GrSetPath“, sondern nur ein „GrGetPath“.
In der Doku auf GitHub folgt zudem in den Routinen auf „GrSetPaletteEntry“ gleich „GrSetPrivateData“.Kann es sein, dass es gar kein „GrSetPath“ gibt?
-
In der alten SDK-Doku wird die Funktion jedoch tatsächlich erwähnt:
„GrGetPath() retrieves the handle of a block containing the path's data. You may pass this handle to GrSetPath() and thus copy a path to another GState.“
-
Ist die Funktion vielleicht umbenannt worden? Mögliche Kandidaten:
extern void /*XXX*/
_pascal GrSetClipPath(GStateHandle gstate, PathCombineType params, RegionFillRule rule);
extern void /*XXX*/
_pascal GrSetWinClipPath(GStateHandle gstate, PathCombineType params, RegionFillRule rule);
extern void /*XXX*/
_pascal GrSetStrokePath(GStateHandle gstate); -
In 'meiner' Doku steht in CREF.pdf:
GrSetPath()
void GrSetPath(
GStateHandle gstate, /* subject GState */
MemHandle pathGString); /* handle of path’s block */
Takes the passed GState’s path with the path encoded in the block with the
passed handle. To get such a handle, call GrGetPath()
Include: graphics.hAber Fakt ist, dass es diesen Befehl in graphics.h nicht gibt. Schade, ich hatte mir erhofft, dort die Punkte für den Pfad eingeben zu können.
-
Ich habe mal online im Nokia SDK nachgeschaut (auf Archive.org). Dort steht zwar auch der Befehl in der Doku, aber nicht in den Include-Dateien (weder C, noch ASM). Ich habe auch kein „define“ oder so gefunden, das GrSetPath auf einen anderen Befehl mappt…
-
Es gibt auch keine App im Tree, die den Befehl nutzt.
-
Nur ein paar unausgegorene Gedanken. Wo ich anfangen würde zu suchen ist GrCreatePath. das wird oftmals verwendet im Repo. Auf den allerersten Blick scheint es so, als erzeugt man einen Pfad in eine gstate, der dann den Zeichenbereich für die "echten" Zeichenoperationen. einschränkt. Also man zeichnet z.B. eine Ellipse und ein Rechteck, die sich nicht überlappen müssen. Evtl muss man die Dinge noch "füllen". Nach GrEndPath ist das der Bereich in dem die folgenden Grafikausgaben noch wirken. So stelle ich mir "Innen einfügen" vor.
Das wäre also meine Arbeitshypothese "Null" - die man jetzt verifiziren oder verwerfen muss.
Außerdem würde ich persönlich die Doku wälzen und versuchen zu verstehen, was der Unterschied zwischen Pfad und Region ist...
Soweit meine unausgegorenen Gedanken dazu. jpolzfuss Dass Routinen umbenannt worden sind, halte ich für extrem unwahrscheinlich.
Rainer
P.S. Wenn das so stimmt, würde GrSetPath() einen GString nehmen und daraus den Path für das gstate machen. Das wäre für mich konsistent. Dassie imrepo nicht vorkommt könnte heißen, dass sie geplant, aber nie realisiert wurde. falls (!) ich richtig liege würde dann GrBeginPat() - GrDrawGString() - GrEndPath() genau diese Funktionalität liefern. - oder ich liege eben ganz falsch
-
Ich habe meinen ersten Path erzeugt. Eigentlich genau wie beim GString:
GrBeginPath
GrDrawLine...
GrDrawEllipse
...
GrEndPath
GrSetLineColor
GrDrawPath