Hallo,
ich teste gerade die Demoprogramme der Pascal-Portierung des Anti-Grain-Geometry Projektes, das es hier auch in c/C++ geschrieben gibt:
http://www.antigrain.com.
In der
Unit agg_renderer_base.pas habe ich diese Zeilen hier gefunden:
Delphi-Quellcode:
{ SPAN - not_implemented}
{$NOTE renderer_base.span not implemented yet}
function renderer_base.span(x, y: int; len: unsigned): pointer;
begin
end;
UNd weiter unten das hier:
Delphi-Quellcode:
{ 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;
Nach meinem bisherigen Verständnis wird der Parameter
len hier auf die Breite des sichtbaren Bilschirmbereiches oder des sichtbaren Fensters berechnet.
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.