Re: LibGGI2D - Was: ggi2dDrawArc, ggi2dFillArc

2000-03-14 Thread teunis

On Sat, 11 Mar 2000, Jon M. Taylor wrote:

 On Fri, 10 Mar 2000, Andreas Beck wrote:
 
   int ggiStrechCrossBlit(ggi_visual *src, int sx, int sy, int  sw,
  int sh, ggi_visual *dst, int dx, int dy, int dw, int dh);
   It should does the same as ggiCrossBlit, except it also performs
   streching.
  
  Hehe - that was in old LibGGIs. we took it out for its complexity.
 
   Well, it is an atomic drawing op on Savage4 hardware at least.
 But I agree that it is not necessary to have in LibGGI.

Should be in either libGGI2d (imho this belongs there)
or in a seperate lib devoted to BITBLT's

[clip - there's lots on list]
  - ggi2D equivalents of all LibGGI drawing primitives that obey the extended
markups above.
 
   Including text?

dinna think that libGGI2D should include fonts/text.
It's a complex topic and is better suited with external libs.  Like
freetype :)

  - triangles, 
 
   All flat, no perspective stuff?

Makes sense.  Non-perspective triangles are acceled on many cards and
could be used in some drawing ops.  libGGI2D shouldn't have any
3D-specific stuff  yet.  Or maybe ever?
(but sharing with libGGI3D or Mesa or ... is mandatory)

polygons,
 
   Should this be different from triangles?  We'll have to decompose
 the polygons into triangles or triangle fans in many cases anyway, in
 order to accelerate them efficiently with some hardware. DrawPolygon(vis,
 triangle, ...) is just a degenerate case of this.

Agreed.  I also don't look forward to examining the case of non-convex
polys.  Decomposing polys is a pain!

arbitrarily positioned ellipses and arcs
 
   Yes.
 
  - rounded-edge rectangles ?
 
   Multisource ROP blit, superimposing a circle and a square.

Also duable using a modified circle algorithm.  IMHO that's actually more
accurate.  I've done it both ways and prefer this

  - spline/bezier shapes ?
 
   What hardware accelerates these?

Does it matter?  It's still duable :)

  - streched (Cross-)blitting.
 
   Stretching can be handled by allowing different source and
 destination geometries.

...  Never thought of that :)

  Now go for it !
 
   Sure.  I'll try to collect all the ideas from the mailing list
 archives and come up with a proposal over the weekend.  Is there still any
 interest in the LibXMI idea, or should I assume that we are trying to
 design the ideal 2D library from the ground up?

libXMI's still interesting... - but I prefer accels :)
After all, just about all graphics cards these days can do accelerations.
(yes I also have some ulterior motives...  a 2D accelerated commandstream
over a network as a target simplifies having to broadcast streaming
video...  long story, later :)

G'day, eh? :)
- Teunis



Re: LibGGI2D - Was: ggi2dDrawArc, ggi2dFillArc

2000-03-13 Thread Thomas Mittelstaedt

Rodolphe Ortalo [EMAIL PROTECTED] writes:


 I'm still interested in libxmi, it _may_ save you some time if it can
 provide the software-only rendering routines for free. But, of course, a
 fully new 2D library would be perfect also (but maybe it's a lot of work
 to do the software emulation).
 
 Rodolphe
 

So are we. My (small) company is in urgent need to get something working
soon, which gives us 2d functionality like arcs and polygons.
So, the libxmi solution sounds like the most feasible at this point.
And I do not want to do it all on my own.
 

-- 
Thomas Mittelstaedt, software developer
[EMAIL PROTECTED]



Re: LibGGI2D - Was: ggi2dDrawArc, ggi2dFillArc

2000-03-13 Thread Jon M. Taylor

On 13 Mar 2000, Thomas Mittelstaedt wrote:

 Rodolphe Ortalo [EMAIL PROTECTED] writes:
 
 
  I'm still interested in libxmi, it _may_ save you some time if it can
  provide the software-only rendering routines for free. But, of course, a
  fully new 2D library would be perfect also (but maybe it's a lot of work
  to do the software emulation).
  
  Rodolphe
  
 
 So are we. My (small) company is in urgent need to get something working
 soon, which gives us 2d functionality like arcs and polygons.
 So, the libxmi solution sounds like the most feasible at this point.
 And I do not want to do it all on my own.

Relax, I am doing XMI.  I will try to get a prototype XMI/GGI
build tree up and running soon.

Jon

---
'Cloning and the reprogramming of DNA is the first serious step in 
becoming one with God.'
- Scientist G. Richard Seed



Re: LibGGI2D - Was: ggi2dDrawArc, ggi2dFillArc

2000-03-13 Thread Jon M. Taylor

On Sun, 12 Mar 2000, Rodolphe Ortalo wrote:

 
 
 On Sat, 11 Mar 2000, Jon M. Taylor wrote:
  Sure.  I'll try to collect all the ideas from the mailing list
  archives and come up with a proposal over the weekend.  Is there still any
  interest in the LibXMI idea, or should I assume that we are trying to
  design the ideal 2D library from the ground up?
 
 (Oops. Once again the last time... :-))
 
 I'm still interested in libxmi, it _may_ save you some time if it can
 provide the software-only rendering routines for free. 

I agree, and after having looked over both LibXMI and the gnu
plotutils which use XMI, I think it will work out pretty nicely.  LibXMI
isn't the ultimate 2D library, but it is here now, tested and used, and
for being based on the X11 primitives it is actually pretty well
architected.  I'm gonna port it and table the other 2D-from-the-ground-up
idea for later, if XMI doesn't give other people what they need.

 But, of course, a
 fully new 2D library would be perfect also (but maybe it's a lot of work
 to do the software emulation).

I would be quite a bit of work.  XMI has a lot more immediate uses
and can (hopefully) be ported to the LibGGI environment quickly and
easily.

Jon

---
'Cloning and the reprogramming of DNA is the first serious step in 
becoming one with God.'
- Scientist G. Richard Seed



Re: LibGGI2D - Was: ggi2dDrawArc, ggi2dFillArc

2000-03-12 Thread Rodolphe Ortalo



On Sat, 11 Mar 2000, Jon M. Taylor wrote:
   Sure.  I'll try to collect all the ideas from the mailing list
 archives and come up with a proposal over the weekend.  Is there still any
 interest in the LibXMI idea, or should I assume that we are trying to
 design the ideal 2D library from the ground up?

(Oops. Once again the last time... :-))

I'm still interested in libxmi, it _may_ save you some time if it can
provide the software-only rendering routines for free. But, of course, a
fully new 2D library would be perfect also (but maybe it's a lot of work
to do the software emulation).

Rodolphe




Re: ggi2dDrawArc, ggi2dFillArc

2000-03-11 Thread Jan Kneschke

On Fri, Mar 10, 2000 at 03:18:15PM +0100, Christoph Egger wrote:
 
 
 On Wed, 8 Mar 2000 [EMAIL PROTECTED] wrote:
 
  Hi !
  
   At least, I know I will need _exactly_ these drawing functions to have
   _all_ the rendering capabilities required for the OpenAmulet GUI library.
  
  Could you give an API wishlist ? I might attack reimplementing LibGGI2D in a
  way that makes it more consistent with the other extensions and allowing
  to HW-Accelerate much of it.
  
 
 I wish to have:
 
 int ggiStrechCrossBlit(ggi_visual *src, int sx, int sy, int  sw,
int sh, ggi_visual *dst, int dx, int dy, int dw, int dh);
 
 It should does the same as ggiCrossBlit, except it also performs
 streching.
i haven't followed the discussion, but ...

Streching with or without CrossBlit comes down to the same accel on some
gfx-cards. it would save one accel if we would have such a combined command.
 
 But I think, this should go into libggi and not libggi2d...
 
 Comments?
 
 
 Christoph Egger
 E-Mail: [EMAIL PROTECTED]

thats all
  Jan

--- 
  -)=  Jan Kneschke -- Kiel -- Germany -- http://www.kneschke.de =(-



Re: LibGGI2D - Was: ggi2dDrawArc, ggi2dFillArc

2000-03-11 Thread Jon M. Taylor

On Sat, 11 Mar 2000, teunis wrote:

 [on reimplementation of libGGI2D]
 
 On Fri, 10 Mar 2000, Andreas Beck wrote:
 
 [clip]
  - There is an urgent need for 2D drawing functionality by several groups.
  - LibGGI2D is unmaintained and doesn't carry the usual GGI License.
  
  So please - those who need it: Get together and rewrite it. Specify all
  your needs and make a header-style proposal.
  
  A few proposals to get you started: 
  
  - ROP 256
 
 What's this mean?

Microsoft's Win32 ROP256 standard.  Look in any windows
programming book.
 
  - arbitrary length patterns for lines and background.
  - ggi2D equivalents of all LibGGI drawing primitives that obey the extended
markups above.
  - triangles, trapezoids (PM2 can accelerate aligned trapezoids) polygons, 
arbitrarily positioned ellipses and arcs
  - rounded-edge rectangles ?
 
 special case of circle draw.  Really quite simple.
 
  - spline/bezier shapes ?
 
 Okay a little more complicated.  Okay a lot.  Look how Java 2.0 handles
 this one it's not too bad...
 
  - streched (Cross-)blitting.
 
 Frequently accelerated.  BITBLT's are almost -always- accelerated though.
 
 
 I would -love- to see a pipeline proposal:
 how to handle rendering pipeline.  AKA OpenGL's specs :)

You have already seen mine, it is LibGGI3D

 I'm not saying OpenGL is the best way of looking at things... but that
 style's quite suitable to most accels + most libs.
 
 something like:
 [complex command]
   - handle clipping;  can insert "stencil" bitop to for this...;
   - [select bitop]
   - [run series of render-ops]
 
 I dunno.

The GL state-machine thing is designed the way it is because it
was designed to be embedded into hardware.  2D hardware acceleration is
not nearly as consistently designed as 3D hardware, usually it is a
crazy-quilt of different ways to do things.  The only stuff that's really
common is the 8514/A style 2D accel set.  What this all means is that,
unlike GL, we don't have a nice abstraction of a rendering pipeline to
stuff everything into.  We have to tune the nature of the pipeline code to
the hardware in order to optimize it, and having one standard type of 2D
graphics pipeline would be too restrictive.  X is a good example of why
this is bad.

 bitop - eg. AND/XOR/OR/... + bitmasks...
 renderops - simpler render commands that are usually acceled.  Like
 lines.  And points.  And rectangular fills...  And BITBLT's.

Multisource blits with generic and extensible ROPs can take care
of most of that stuff.
 
 (and the only request I have for clipping is...  Be able to handle
 stencils and rectangular clipping regions and be able to draw onto
 stencils :)

Sure.

Jon
 
---
'Cloning and the reprogramming of DNA is the first serious step in 
becoming one with God.'
- Scientist G. Richard Seed



Re: LibGGI2D - Was: ggi2dDrawArc, ggi2dFillArc

2000-03-11 Thread Marcus Sundberg

"Jon M. Taylor" [EMAIL PROTECTED] writes:

   Sure.  I'll try to collect all the ideas from the mailing list
 archives and come up with a proposal over the weekend.  Is there still any
 interest in the LibXMI idea, or should I assume that we are trying to
 design the ideal 2D library from the ground up?

LibXMI is a rasterization library, not a drawing library.

//Marcus
-- 
---+
Marcus Sundberg| http://www.stacken.kth.se/~mackan
 Royal Institute of Technology |   Phone: +46 707 295404
   Stockholm, Sweden   |   E-Mail: [EMAIL PROTECTED]



Re: LibGGI2D - Was: ggi2dDrawArc, ggi2dFillArc

2000-03-11 Thread James Simmons


  - triangles, 
 
   All flat, no perspective stuff?
 
  trapezoids (PM2 can accelerate aligned trapezoids) 
 
   So can Trio64 and up.
 
polygons,
 
   Should this be different from triangles?  We'll have to decompose
 the polygons into triangles or triangle fans in many cases anyway, in
 order to accelerate them efficiently with some hardware. DrawPolygon(vis,
 triangle, ...) is just a degenerate case of this.

Same for triangle strips. ATI 128 cards support these. 

  - spline/bezier shapes ?
 
   What hardware accelerates these?

Infinite Reality engines. I think SGI visual workstations did as well.
Can't remember. 



Re: ggi2dDrawArc, ggi2dFillArc

2000-03-10 Thread Christoph Egger



On Wed, 8 Mar 2000 [EMAIL PROTECTED] wrote:

 Hi !
 
  At least, I know I will need _exactly_ these drawing functions to have
  _all_ the rendering capabilities required for the OpenAmulet GUI library.
 
 Could you give an API wishlist ? I might attack reimplementing LibGGI2D in a
 way that makes it more consistent with the other extensions and allowing
 to HW-Accelerate much of it.
 

I wish to have:

int ggiStrechCrossBlit(ggi_visual *src, int sx, int sy, int  sw,
   int sh, ggi_visual *dst, int dx, int dy, int dw, int dh);

It should does the same as ggiCrossBlit, except it also performs
streching.

But I think, this should go into libggi and not libggi2d...

Comments?


Christoph Egger
E-Mail: [EMAIL PROTECTED]



Re: ggi2dDrawArc, ggi2dFillArc

2000-03-09 Thread Rodolphe Ortalo



On 8 Mar 2000, Thomas Mittelstaedt wrote:
 I have an instant need to be able to draw Arcs, RoundRects and
 Polygons etc.  So, if somebody of the GGI project can give me
 guidance, I can jump right into integrating libxmi, since libggi2d
 just does not work.  I already installed libxmi. There are a few
 customizations that they mention in the main header xmi.h.

Overall, it seems to me that libxmi should be directed so as to use
LibGGI's "DirectBuffer"s to access the framebuffer. Alternatively,
you could use ggi{Draw,Put,Get}Pixel directly... (Maybe it's simpler.)

 At installation time one can redefine 3 things:
 i)   Define MI_PIXEL_TYPE at installation time
 ii)  MI_CANVAS_DRAWABLE_TYPE can be redefined to describe what a Pixmap
  should be.
 iii) MI_DEFAULT_MERGE2_PIXEL can be set to a different algorithm than
  the Painter's, when pixels are applied to the 'canvas'.

It don't know DirectBuffer or LibGGI basic types well-enough to direct
you. But I have the feeling that Andreas or Marcus could easily tell you
what these macros should be... :-) (LibXMI may need to be recompiled
several times to generate the second stage for 8bpp, 16bpp, etc. Or maybe
LibGGI can take care of this...)

IMO, the drawable type is an array of MI_PIXEL_TYPE (linear framebuffer
abstraction). Like the default.
MI_DEFAULT_MERGE2_PIXEL is primarily useful for transparency management
(alpha channel). In a first step, you can surely use the default settings
(a new pixel replaces an old one).

 Is that enough to get basic drawing functionality working together
 with GGI?  Using cross-blitting from memory could also take care of
 clipping.

I think it is enough.

 So what are the plans? I have to do something, now!!

:-)) Fiddle with libxmi second stage and try to set things so that libxmi
uses libggi DirectBuffers...

But that was just an idea you know...

Rodolphe



Re: ggi2dDrawArc, ggi2dFillArc

2000-03-09 Thread Rodolphe Ortalo



On Wed, 8 Mar 2000 [EMAIL PROTECTED] wrote:
  (set-of-non-overlapping-rectangles) in LibGWT.
  I have the feeling of initiating too much workload wrt to graphic context
  switch. (Basically, the way it is done is a loop over all the rectangles
  composing the region while calling set-GC ; draw .)
 
 Oh - yes, I agree, that this imposes quite some unnecessary load. IMHO you'd 
 be better off by backbuffering as soon as you have more than say 2 or 3 
 rectangles.

Backbuffering is one possible solution. But I guess also that I could
also reorder LibGWT internal drawing calls to minimize the GC-switches.

 I'd say yes. It is a huge calling overhead, even if clipping is pretty fast.
 As long as you use HW-accels, you do each accel call mutiple times, which
 wastes a lot of time unless we do batched accel.

Yes but... it's simple and does not require Z-buffer management (which
realistically should be done primarily in hardware). Well, anyway, as you
have surely understood, my principal concerns with LibGWT currently are
not performance-related. I'd like to have it running with full
functionality first! :-) [I lost nearly 6 months scratching my head in
front of event dispatching... The solution was too simple.;-)]

 Yeah. It might make sense to implement a simple z-buffer operations thingy
 or similar for LibGGI3D and base windowing toolkits on that.
 
 Basically that is what they want: Multiple planes stacked on to of each 
 other, with different depth.

Yes, it may make sense. And this is probably what Berlin requires. LibGWT
has a more narrow ambition...

  At least, I know I will need _exactly_ these drawing functions to have
  _all_ the rendering capabilities required for the OpenAmulet GUI library.
 
 Could you give an API wishlist ? I might attack reimplementing LibGGI2D in a
 way that makes it more consistent with the other extensions and allowing
 to HW-Accelerate much of it.

Mmm... Yes, surely. Well, the most convenient way is probably to direct
you at the documentation of OpenAmulet on the Web. It is accessible via a
link on the http://www.openip.org/ web page. Inside the full
documentation, the layer that wraps the OS's graphical library is
described in the 'GEM' chapter.

Basically, this layer is a subset of the X11 drawing functions. You need
'styles' (for lines and for filling). The drawing methods of a GEM
object (OpenAmulet is in C++) are:
 Draw_Arc, Draw_Image (ie a pixmap), Draw_Line, Draw_Lines, Draw_2_Lines,
Draw_3_Lines, Draw_Rectangle, Draw_Roundtangle (a useful singularity) and
Draw_Text (w/ complex fonts, this: later!).
Looking more closely, you'll also see that a Bitblt method is needed
(but this one is already available in LibGGI itself).

As you can see, this API is pretty simple - and corresponds closely to
what you can find in libxmi (or X11). Hence my suggestion to use already
available software implementations like LibXMI (over LibGGI directbuffer).

Of course, a similar API with hardware acceleration would be wonderful.
But maybe this time would be better spent over LibGGI3D (where 2D would
only be a specific case).
I'd tend to give higher priority to a 2D API personnally, but I am partial
on this (I need it :-). Berlin's people would surely have opposite
priorities (and a much higher need for hardware accels).

Maybe we need both in fact.

Rodolphe




Re: ggi2dDrawArc, ggi2dFillArc

2000-03-08 Thread Stefan Seefeld

[EMAIL PROTECTED] wrote:

  OK. Especially if LibGGI2D is oriented towards hardware acceleration,
  complex clipping should not be too much different from hardware chipsets
  capabilities.
 
 Yeah. It might make sense to implement a simple z-buffer operations thingy
 or similar for LibGGI3D and base windowing toolkits on that.
 
 Basically that is what they want: Multiple planes stacked on to of each
 other, with different depth.

Since 'they' is addressed at windowing system implementors, I'll respond
here in the name of the berlin project.
The situation we have is that we manage a scene graph with polymorphic graphic
nodes. Each node defines it's own extension and shape. Further, it can be
translucent. This situation can't simply be managed be redrawing 'exposed'
graphic nodes. Instead, if a region gets damaged we need to traverse the
scene graph and redraw each graphic node which intersects. Yet the problem
remains: how can we clip to the shape of the actual parent graphic if it
can have arbitrary shapes ?
The most common situation is a rectangular graphic. Next comes a transformed
rectangle (i.e. if you consider the union of multiple possibly transformed
rectangles, you get an arbitrary convex polygon). And finally there are
arbitrary shapes.
At least for the last we need a stencil buffer. Is there a way to design
clipping in GGI which is incremental, i.e. which allows more than none or
everything (none being simple scissor and everything being stencil), something
in between ?

 Could you give an API wishlist ? I might attack reimplementing LibGGI2D in a
 way that makes it more consistent with the other extensions and allowing
 to HW-Accelerate much of it.

speaking about wishlist, may I remember you of one important wish we have:
a drawable (visual) store. Some functionality with which we can allocate
(hopefully video) memory to draw into which then can be mapped to the screen.

Regards,Stefan
___  
  
Stefan Seefeld
Departement de Physique
Universite de Montreal
email: [EMAIL PROTECTED]

___

  ...ich hab' noch einen Koffer in Berlin...



Re: ggi2dDrawArc, ggi2dFillArc

2000-03-08 Thread becka

Hi !

  I don't think LibGGI2D should have arbitrary clipping. I'd leave that to 
  a windowing library or a 3D package.

 I understand. But I asked this question in the first place because I don't
 feel totally at ease with the way I/we do clipping over regions
 (set-of-non-overlapping-rectangles) in LibGWT.
 I have the feeling of initiating too much workload wrt to graphic context
 switch. (Basically, the way it is done is a loop over all the rectangles
 composing the region while calling set-GC ; draw .)

Oh - yes, I agree, that this imposes quite some unnecessary load. IMHO you'd 
be better off by backbuffering as soon as you have more than say 2 or 3 
rectangles.

 I wonder if this is problematic or not...

I'd say yes. It is a huge calling overhead, even if clipping is pretty fast.

As long as you use HW-accels, you do each accel call mutiple times, which
wastes a lot of time unless we do batched accel.

  Thus I think complex clipping shouldn't be handled by LibGGI2D, as it is
  rarely needed and it would require the hardware to support method 2 to be
  able to do accelerated drawing (o.k. - we could dynamically switch drawing
  functions if multiple clips are active, but that would add a lot of
  complexity without need).

 OK. Especially if LibGGI2D is oriented towards hardware acceleration,
 complex clipping should not be too much different from hardware chipsets
 capabilities.

Yeah. It might make sense to implement a simple z-buffer operations thingy
or similar for LibGGI3D and base windowing toolkits on that.

Basically that is what they want: Multiple planes stacked on to of each 
other, with different depth.

  I think LibGGI2D would mainly be handy for stuff like making stuff like
  statistics plots or similar for an existing application. Could be very 
  handy for web based dynamic graphics e.g. These applications don't require
  complex clipping.

 Hmmm. I'm not so sure... It seems to me that vector oriented programs do a
 lot of clipping indeed; e.g. against polygonal region (a filled graphic
 plot). 

You mean like in filling a figure ? IMHO using clipping to do that is a 
braindead idea. They should use fillpoly or tesselate the poly and draw
triangles.

 At least, I know I will need _exactly_ these drawing functions to have
 _all_ the rendering capabilities required for the OpenAmulet GUI library.

Could you give an API wishlist ? I might attack reimplementing LibGGI2D in a
way that makes it more consistent with the other extensions and allowing
to HW-Accelerate much of it.

 implement offscreen windows, and I'll be able to do a dual release of both
 LibGWT (0.0.2 :-) and OpenAmulet (4.3.51 :-)).

GREAT !

CU, ANdy

-- 
Andreas Beck  |  Email :  [EMAIL PROTECTED]



Re: ggi2dDrawArc, ggi2dFillArc

2000-03-08 Thread Jon M. Taylor

On Tue, 7 Mar 2000, Rodolphe Ortalo wrote:

 
 
 On Sun, 5 Mar 2000, Andreas Beck wrote:
 (as an answer to this question from myself)
   Should libggi2d support arbitrary clipping - or would it be acceptable to
   have a 'small' version with only rectangular clipping ? (But with decent
   drawing functions.)
  
  I don't think LibGGI2D should have arbitrary clipping. I'd leave that to 
  a windowing library or a 3D package.
 
 I understand. But I asked this question in the first place because I don't
 feel totally at ease with the way I/we do clipping over regions
 (set-of-non-overlapping-rectangles) in LibGWT.
 I have the feeling of initiating too much workload wrt to graphic context
 switch. (Basically, the way it is done is a loop over all the rectangles
 composing the region while calling set-GC ; draw .)

Ugh.  IMHO you should define a function which sets up the clip
regions however you want to represent them, and then have the target code
decompose that into a set-GC ; draw loop, or a stencil mask, or a set of
GL clip planes, or whatever.  You will lose all your optimization
potential if you hardcode the clipping algorithm as you describe above.
 
 I wonder if this is problematic or not...

I think it is.
 
  I only know about 2 hardware clipping implementations: 1. single rectangle
  nad 2. z-buffer or window-id (which is essentially the same except for the
  comparision function).
  
  Thus I think complex clipping shouldn't be handled by LibGGI2D, as it is
  rarely needed and it would require the hardware to support method 2 to be
  able to do accelerated drawing (o.k. - we could dynamically switch drawing
  functions if multiple clips are active, but that would add a lot of
  complexity without need).
 
 OK. Especially if LibGGI2D is oriented towards hardware acceleration,
 complex clipping should not be too much different from hardware chipsets
 capabilities.

Right, like alpha/z/stencil tests or window IDs |-.
 
  I think LibGGI2D would mainly be handy for stuff like making stuff like
  statistics plots or similar for an existing application. Could be very 
  handy for web based dynamic graphics e.g. These applications don't require
  complex clipping.
 
 Hmmm. I'm not so sure... It seems to me that vector oriented programs do a
 lot of clipping indeed; e.g. against polygonal region (a filled graphic
 plot). 

GL clip planes.
 
 Well, we'll see. Anyway, I still think that libxmi may be an interesting
 candidate for a GGI sub-lib. It would surely raise problems wrt hardware
 acceleration - so not for LibGGI2D in the first place - but it may be nice
 to have a decent set of drawing functions. (libxmi is a legacy extracted
 from the public X11 sources - it is used in gnuplot according to the
 documentation. It provides all the usual drawing functions of X11 - but it
 is a software oriented rendering package in the first place [maybe even in
 the design itself]).

I actually think this is a much better idea than LibGGI2D itself.
LibXMI has a specific purpose and welldefined boundaries to its design,
whereas LibGGI2D's design is much more generic and ill-defined.  Thus, it
should be easy to turn LibXMI into a LibGGI extension and accelerate its
operations in the appropriate target code, and we'd always know where we
stood and what functionality to support.  Contrast this with LibGGI2D,
where we cannot agree even on what functionality should be present in the
library API itself, to say nothing of how to accelerate it!  I think that
says a lot.
 
 I don't know these issues much. I'd like to have additional advice from
 people knowing GGI.
 At least, I know I will need _exactly_ these drawing functions to have
 _all_ the rendering capabilities required for the OpenAmulet GUI library.
 And this will hopefully be very soon: I mainly need to understand why
 libgwt's evExpose events gets messed by OpenAmulet currently, and to
 implement offscreen windows, and I'll be able to do a dual release of both
 LibGWT (0.0.2 :-) and OpenAmulet (4.3.51 :-)).

Sounds good!

Jon

---
'Cloning and the reprogramming of DNA is the first serious step in 
becoming one with God.'
- Scientist G. Richard Seed



Re: ggi2dDrawArc, ggi2dFillArc

2000-03-07 Thread Rodolphe Ortalo



On Sun, 5 Mar 2000, Andreas Beck wrote:
(as an answer to this question from myself)
  Should libggi2d support arbitrary clipping - or would it be acceptable to
  have a 'small' version with only rectangular clipping ? (But with decent
  drawing functions.)
 
 I don't think LibGGI2D should have arbitrary clipping. I'd leave that to 
 a windowing library or a 3D package.

I understand. But I asked this question in the first place because I don't
feel totally at ease with the way I/we do clipping over regions
(set-of-non-overlapping-rectangles) in LibGWT.
I have the feeling of initiating too much workload wrt to graphic context
switch. (Basically, the way it is done is a loop over all the rectangles
composing the region while calling set-GC ; draw .)

I wonder if this is problematic or not...

 I only know about 2 hardware clipping implementations: 1. single rectangle
 nad 2. z-buffer or window-id (which is essentially the same except for the
 comparision function).
 
 Thus I think complex clipping shouldn't be handled by LibGGI2D, as it is
 rarely needed and it would require the hardware to support method 2 to be
 able to do accelerated drawing (o.k. - we could dynamically switch drawing
 functions if multiple clips are active, but that would add a lot of
 complexity without need).

OK. Especially if LibGGI2D is oriented towards hardware acceleration,
complex clipping should not be too much different from hardware chipsets
capabilities.

 I think LibGGI2D would mainly be handy for stuff like making stuff like
 statistics plots or similar for an existing application. Could be very 
 handy for web based dynamic graphics e.g. These applications don't require
 complex clipping.

Hmmm. I'm not so sure... It seems to me that vector oriented programs do a
lot of clipping indeed; e.g. against polygonal region (a filled graphic
plot). 


Well, we'll see. Anyway, I still think that libxmi may be an interesting
candidate for a GGI sub-lib. It would surely raise problems wrt hardware
acceleration - so not for LibGGI2D in the first place - but it may be nice
to have a decent set of drawing functions. (libxmi is a legacy extracted
from the public X11 sources - it is used in gnuplot according to the
documentation. It provides all the usual drawing functions of X11 - but it
is a software oriented rendering package in the first place [maybe even in
the design itself]).

I don't know these issues much. I'd like to have additional advice from
people knowing GGI.
At least, I know I will need _exactly_ these drawing functions to have
_all_ the rendering capabilities required for the OpenAmulet GUI library.
And this will hopefully be very soon: I mainly need to understand why
libgwt's evExpose events gets messed by OpenAmulet currently, and to
implement offscreen windows, and I'll be able to do a dual release of both
LibGWT (0.0.2 :-) and OpenAmulet (4.3.51 :-)).

Rodolphe




Re: ggi2dDrawArc, ggi2dFillArc

2000-03-04 Thread Rodolphe Ortalo



On Thu, 2 Mar 2000, Eric , Yu-En Lue wrote:
  Should potential connections (to do, considered, already done) between
  libxmi and libggi2d be explored further ?

   it's algorithms , data structures are mostly done and rather
   imcompatible with ggi , I don't know how clipping works , but
   I guess incorporating it into libggi2d may require some efforts..
   especially taking care of the region/clipping parts...

Should libggi2d support arbitrary clipping - or would it be acceptable to
have a 'small' version with only rectangular clipping ? (But with decent
drawing functions.)
libxmi is more a sort of vector-drawing rasterizer package than a full set
of image manipulation functions - but well, it could be useful to have
such a thing.

Well, anyway, more on this later,

Rodolphe




Re: ggi2dDrawArc, ggi2dFillArc

2000-03-01 Thread Andreas Beck

Hi !

 I am not a GGI-newbie anymore but fairly 'young' in it.
 I recently was trying to use the above functions without any success.
 I am running a late January snapshot of all ggi including ggi2d.

AFAIK the development of LibGGI2D is pretty much halted ... 
Anyone here who takes care of it ? If no one does right now, is there
someone who would _want_ to take care of it ?

IMHO it could take a complete rewrite ...

 According to the ChangeLog in libggi2d/doc and the TODO, these
 two functions are open issues. Has there been any work on it in
 the mean time?

AFAIK not.

 I would be very thankful if somebody could help me since this work
 is to replace X in a commercial, embedded product; 

I and probably quite some other developers here are available for commercial
contract work, if required.

We will of course also try to help without payment as time permits.

The above two functions should be relatively trivial to add, just a bit of a
pain regarding the number of special cases to handle. I'd basically handle
it the same as drawing the full ellipse and just checking if the angle is
within the specified range.

CU, Andy

-- 
= Andreas Beck|  Email :  [EMAIL PROTECTED] =



Re: ggi2dDrawArc, ggi2dFillArc

2000-03-01 Thread Eric , Yu-En Lue


On Wed, 1 Mar 2000, Rodolphe Ortalo wrote:

 
 Just a note, I recently fell around GNU 'libxmi' which seems to be "the
 drawing functions of X11 stand-alone" (available from your nearest
 www.gnu.org site). It's pretty small and covers much of X11 drawing
 aspects (but only the algorithms, nothing more)...
 
Clipping things are not available ... others are mostly
done . :))

 Should potential connections (to do, considered, already done) between
 libxmi and libggi2d be explored further ?
 
it's algorithms , data structures are mostly done and rather
imcompatible with ggi , I don't know how clipping works , but
I guess incorporating it into libggi2d may require some efforts..
especially taking care of the region/clipping parts...

 Rodolphe
 



Re: ggi2dDrawArc, ggi2dFillArc

2000-03-01 Thread Thomas Mittelstaedt

Andreas,

first, thank you and the other guys for the hints. I'll look
into libxmi.

 I and probably quite some other developers here are available for commercial
 contract work, if required.


Thank you for the offer and I'll relay that to our 'CTO' right away!

thomas


-- 
===
Thomas Mittelstaedt, Software Developer
[EMAIL PROTECTED]