Changes in 41.6 --------------- The library is now distributed in two formats, the standard and enhanced versions. The difference: Standard is compiled for 68000, compatible with 2.0, and will use 3.0 enhancements when available. Enhanced is compiled for 68020, and requires 3.0, as it will use 3.0 features natively without constant version checking. general ------- GRM_DIMENSIONS will now pass a GadgetInfo structure, found in grmd_GInfo. This is so you can make aspect-ratio dependant layout decisions based on the screen's aspect ratio, found in the DrawInfo structure. You cannot look at the Window pointer because this method is often sent when no window is open. Added a function, BGUI_PostRender(Class *cl, Object *obj, struct gpRender *gp). This is only for class implementors that subclass from baseclass. Call it with the same arguments that GP_RENDER was called with, before you exit the rendering function. Don't call it if the superclass method failed, call it in all other cases. Try to support this function soon (even if you have to check for v41.6) so your class can be in a virtual group in the future. To properly support recursive clipping and buffering, there needed to be a way for the baseclass to perform some operations after everything is rendered. Do not use objects in virtual groups if their classes do not call this function. If you must use an old pre-compiled class, you'll have to use it with the externalclass if you need it in a virtual group. frameclass ---------- Radiobutton frames no longer support a selected fill, this is handled by the radiobuttonclass itself. You shouldn't be using this frametype for yourself anyway, as it may change drastically in the future (possibly even becoming round). labelclass ---------- Supports rendering labels mirrored along the X and Y axis. The use of this is not immediately apparent to you, but it has a purpose. Experiment with it to see if it works on your system, but do NOT use it in an application. DO NOT TRY TO FLIP A LABEL ALONG THE XY AXIS (45 DEGREES). Note: these flags may not be available yet baseclass --------- Made the first part of the BaseClass instance data available directly to the subclasses ("protected" to C++ programmers). This accelerates layout and rendering, since an object no longer has to get important rendering information by repeated calls to GetAttr(). Temporarily disabled the transparency option. Caused too many problems, this is due to a problem with BltMaskBitMapRastPort, apparently. Before disabling it, I added the ability to control the transparency inside and outside of the dropbox, by specifying a left-justified fractional value. Only 25% increments are supported now, but it may be more precise in the future with better hardware or routines. By the way, everything has always worked PERFECTLY on my CyberVision64. Added a new attribute, BT_Buffer, to allow per-object buffering. Third-party classes cannot use this until the buffer rastport is made public (it will be), but all internal BGUI classes will recognize it. (not all do yet...) Fixed some problems with RAWKEY events and IDCMP hooks. groupclass ---------- Fixed left-alignment problem with objects. Now uses baseclass buffering method. Supports dynamic relayout. If a gadget is sized too big to fit, the groupclass will grow to accomodate it. The GRM_ADDMEMBER, GRM_REMMEMBER, GRM_INSERTMEMBER, and GRM_REPLACEMEMBER have all been rewritten to support this. It is known that there are problems with the new methods since the relayout engine is not complete. It should work to a point but if the gadgets do not fit, it will not show them even though it returns TRUE for success. Of course this will be solved soon. Added a new attribute, LGO_Visible, that can be set to FALSE to hide a member from being displayed, or TRUE to make the object visible. Of course the default is TRUE! It is now possible to -set- LGO_#? attributes by doing a OM_SET (SetAttrs) on the member object itself. The object must already be attached into a group, or nothing will happen. Currently, only a few attributes are settable, LGO_Weight, LGO_Visible, and LGO_FixAspect. LGO_FixWidth and LGO_FixHeight will allow you to change the value, but once an object has a fixed width or height, it is irreversible. buttonclass ----------- Can use screens aspect ratio to determine minimum size for vector images, so it will always look correct on any resolution screen. Now uses baseclass buffering method. Added a new tag, BUTTON_SelectOnly, that causes a button to only be able to be selected by the user. This is how the buttons in an MX gadget work, you can select one, but to deselect one you must click on another one, and the application or BGUI deselects the old one with OM_SET. This tag is probably useless to you unless you are making an MX-type gadget (or a self-destruct button?) but it was requested to be made public, so here it is. radiobuttonclass ---------------- A new subclass of buttonclass to handle radiobutton imagery. Uses buttonclass screen aspect ratio correction. Fixed display problem with radiobuttons. checkboxclass ------------- Changed to a subclass of buttonclass, much smaller. Added fix to force frames to not be FRF_EDGES_ONLY. Uses buttonclass screen aspect ratio correction. screenreqclass -------------- Finished this class. Wasn't done in the last release.