![]() |
Anti Grain Geometry ---> Span Algorithmus???
Hallo,
ich teste gerade die Demoprogramme der Pascal-Portierung des Anti-Grain-Geometry Projektes, das es hier auch in c/C++ geschrieben gibt: ![]() In der Unit agg_renderer_base.pas habe ich diese Zeilen hier gefunden:
Delphi-Quellcode:
UNd weiter unten das hier:
{ SPAN - not_implemented}
{$NOTE renderer_base.span not implemented yet} function renderer_base.span(x, y: int; len: unsigned): pointer; begin end;
Delphi-Quellcode:
Nach meinem bisherigen Verständnis wird der Parameter len hier auf die Breite des sichtbaren Bilschirmbereiches oder des sichtbaren Fensters berechnet.
{ BLEND_SOLID_VSPAN }
procedure renderer_base.blend_solid_vspan(x, y, len: int; c: aggclr_ptr; covers: int8u_ptr); begin if x > _xmax then exit; if x < _xmin then exit; if y < _ymin then begin dec(len ,_ymin - y ); if len <= 0 then exit; inc(ptrcomp(covers ) ,(_ymin - y ) * sizeof(int8u ) ); y:=_ymin; end; if y + len > _ymax then begin len:=_ymax - y + 1; if len <= 0 then exit; end; m_ren.blend_solid_vspan(m_ren ,x ,y ,len ,c ,covers ); end; { COPY_COLOR_HSPAN } procedure renderer_base.copy_color_hspan(x, y, len: int; colors: aggclr_ptr); var d : int; begin if y > _ymax then exit; if y < _ymin then exit; if x < _xmin then begin d:=_xmin - x; dec(len ,d ); if len <= 0 then exit; inc(ptrcomp(colors ) ,d * sizeof(aggclr ) ); x:=_xmin; end; if x + len > _xmax then begin len:=_xmax - x + 1; if len <= 0 then exit; end; m_ren.copy_color_hspan(m_ren ,x ,y ,len ,colors ); end; Die übergebenen Parameter sind aber Wertparameter, die keine Auswirkung außerhalb der Prozedurren haben. Wozu also die Berechnung? Die nächste und eigentliche Frage ist, Was muss in renderer_base.span() erledigt werden und warum. Ich könnte mir genauso gut die Quelltexte aus dem C/C++ Original her nehmen, und hoffen, das der gesuchte Algorithmus dort implementiert ist. Dann aber habe ich nach der Übersetzung dieser Funktion den Algorithmus immer noch nicht verstanden. Deshalb frage ich hier. Wer kann weiter helfen. Gerne auch mit einem Link zu einer verständlichen Beschreibung des Alogorithmus. |
Anti Grain Geometry
Da gab ich mal so langsam ein ***PUSH***
Habe aber die Demos übersetzen können, manche funktionieren, andere stürzen ab. Ich glaub aber nicht, das das an der fehlenden Funktion liegt. Obwohl das Demo mit dem Namen particle_demo fehlerhaft darstellt. Das Original der Bibliothek gibt es in c/C++ geschrieben hier: ![]() Die Pascalportierung ist Bestandteil des fpGUI Projektes von Graeme Geldenhuys. ![]() Wenn function renderer_base.span() nur Initialisierungen vornähme sollte ein Workaround darin bestehen, den anderen bereits implementierten span Funktionen initialisierte Werte zu übergeben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz