Next Previous Contents

2. Resolved issues

2.1 ggiCircle

Is this going to be completely removed?

Decision

Yes. It has been moved to libggi2d.

2.2 Reporting internal state

There is currently no way to report information like the timing information to a ggilib application. At least for some diagnostics this might be useful.

Decision

There was some very good discussion, and the most interesting points were:

There was only one remark in favor of putting this functionality into the libggi, and a valid one, that too many small libraries will be impractical, and that a larger lib is easier to handle.

So the final word from The Lord Of The Library is:

2.3 ggiGetRayPos, ggiWaitRayPos

These two have been implemented for the SVGAlib target, but nowhere else. Should these really become part of the libggi API, or should they move somewhere else? What are they supposed to do?

Decision

The RayPos functions are CRT specific and are moved from libggi to an extension, libggimisc.

2.4 extensionInit/extensionExit, ggiInit, ggiExit

Decision

2.5 Removing the "display-" prefix

It was suggested to drop the "display-" prefix from all LIBGGI_DISPLAY parameters. There was a very easy solution suggested (editing libggi.conf), so it's the political question: with the prefix or not, allow both and recommend one, then which?

Decision

Both ways are allowed. A string that does not contain a dash ('-') is considered an abbreviation of and equivalent to 'display-' plus this string, so 'KGI' is equivalent to 'display-KGI'.

2.6 ggiPuts

How should ggiPuts behave (if the string does not fit into the line)?

Decisions

2.7 Alpha values

There was the suggestion to enhance ggi_color, which currently holds three shorts for r,g, and b, with an additional alpha value (transparency).

Decision

The ggi_color struct will have a short a added, but the libggi itself will not use it.

2.8 Auxiliary buffers

Some cards support auxiliary buffers like Z-Buffers. There is currently no method for requesting them.

Decision

This is going to be solved outside the base libggi. The new extension methos allow overriding mode setting functions, so this type of requests is going to be handled by an extension library to the lkibggi.

2.9 Frames

These changes are done to support multiple frames (screen 'pages' of the same size).

2.10 ggiCrossBlit

This function is supposed to transfer pictures between different visuals. It has been decided that this function will move somewhere else.

There was the proposal to include a 'small' version that will copy from one visual to another, but without stretching/shrinking, and possibly without colour conversion.

Decision

The full crossblit will be moved to libggi2d.

A version without stretching, i.e. one that copies a rectangular piece from one visual to another visual, will be included:

int ggiSimpleCrossBlit(ggi_visual_t src,int sx,int sy,int sw,int sh, ggi_visual_t dst,int dx,int dy);

This will do colour conversion as necessary.

2.11 Palettes

Several topics have been discussed, this is the final word:

2.12 Get/Put buffers: opaque or not?

Decision

The buffers used by the ggiGet* and ggiPut* functions will be guaranteed to have several properties:

2.13 Memory visual memory layout

Decision

The mode struct will be enhanced to provide information about the exact pixel layout. This information is not only needed to request 'suitable' memory displays minimising crossblit work, but for get/putbuffer access as well.

The first candidate is a struct ggi_mode member pixelfmt of ggi_common_plb_setup type.

The canonical way for getting a memory visual of the same type as the main visual will be:


ggi_mode memmode;
ggi_visual_t mainvis,memvis;
 ...
ggiGetMode(mainvis,&memmode);
memvis=ggiOpen("memory",NULL);
ggiCheckMode(memvis,&memmode);
ggiSetMode(memvis,&memmode);

2.14 Graphics context save/resore

It seems to me that the application is guaranteed that all graphics state is saved and restored transparently (including the CLUT) except for the screen content itself, where the application is supposed to redraw after receiving an appropriate redraw event.

2.15 Behaviour on switch-away and switch-back

What is this about?

What has to be done when a program is switched away (either the window (in X) becomes inactive, or the VT is switched), and on re-activation?

This is currently not defined at all.

What are the options for each case? What are pros/cons? How can this be implemented?

Is the application notified? How? Does it get a chance to save screen content, does it need to? Time limit for that?

Decision

If an application is deactivated, depending on the target it may be stopped.

An application can receive several events, for updating screen size, or redrawing or ... (I don't have a documentation about these events yet - HN).


Next Previous Contents