AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Anti Grain Geometry ---> Span Algorithmus???

Ein Thema von DualCoreCpu · begonnen am 28. Okt 2015 · letzter Beitrag vom 29. Okt 2015
Antwort Antwort
DualCoreCpu
(Gast)

n/a Beiträge
 
#1

Anti Grain Geometry ---> Span Algorithmus???

  Alt 28. Okt 2015, 13:51
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.
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#2

Anti Grain Geometry

  Alt 29. Okt 2015, 17:45
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: http://www.antigrain.com

Die Pascalportierung ist Bestandteil des fpGUI Projektes von Graeme Geldenhuys.

http://fpgui.sourceforge.net/

Wenn function renderer_base.span() nur Initialisierungen vornähme sollte ein Workaround darin bestehen, den anderen bereits implementierten span Funktionen initialisierte Werte zu übergeben.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz