Status Report
*************

Last updated March 1998.  The most up-to-date version of this status
report is available at:

     `http://www.gnustep.org/Documentation/gnustep-xdps/gnustep-xdps_toc.html'

   Please send corrections to <scottc@net-community.com>.

   *Key:*

*[10]*
     Complete and tested.

*[8]*
     Missing a few non-core methods, definitely usable.

*[6]*
     Missing several methods, but core is there, usable.

*[4]*
     Begun, but missing core functionality, not usable.

*[2]*
     Skeleton.

*[0]*
     Nothing there.

*[?]*
     Unknown status.

Classes
=======

   Currently none of the classes raise exceptions.

   Please also review the status report for the GNUstep GUI Library,
because any work that needs to be done may also require code to be
written in the GNUstep GUI Library.  The most up-to-date version of the
status report is available at:

     `http://www.gnustep.org/Documentation/gnustep-gui/gnustep-gui_toc.html'

*PXKActionCell:: [10]*
     Should not require any implementation in the backend, so the code
     is essentially just an empty implementation stub which may be used
     in the future if needed.

*PXKApplication:: [6]*
     The `GNUstepBackend' category methods for event handling are
     defined for the X Window System.

*PXKBitmapImageRep:: [6]*
     Now can be used to draw TIFF images; however, does not handle all
     of the possible TIFF image types.

*PXKBox:: [9]*
     Should be complete; will need some additional testing when view
     resizing is implemented.

*PXKBrowser:: [8]*
     Quite usable though have noticed some differences in implementation
     behaviour compared to OPENSTEP, mainly due to NSMatrix.  Most
     functionality missing is actually functionality missing from
     NSMatrix.  Setting the path is not implemented nor is reusing
     column matrices.

*PXKBrowserCell:: [8]*
     Should be complete, but a better arrow image would be nice.

*PXKButton:: [10]*
     Currently there doesn't seem to be a need for any backend
     implementation because NSButton only defines behaviour and does
     not draw.

*PXKButtonCell:: [9]*
     Practically complete besides repeat intervals and key equivalents.
     Displays images for switch and radio button types; can display
     images and text together handling all of the OpenStep types and
     styles.

*PXKCachedImageRep:: [2]*
     The draw method has some test implementation code but the class
     will not be usable until the NSImage work has stabilized.

*PXKCell:: [10]*
     Currently there doesn't seem to be a need for any backend
     implementation because NSCell only defines behaviour and does not
     draw.

*PXKClipView:: [10]*
     Minimal implementation required because NSClipView is mainly
     behaviour with its document view doing all the drawing.

*PXKColor:: [8]*
     Now interfaces with the Display Ghostscript system.  Properly sets
     the appropriate color space; does not handle the difference
     between calibrated and device colors.

*PXKColorList:: [10]*
     Currently there doesn't seem to be a need for any backend
     implementation because NSColorList only defines behaviour and does
     not draw.

*PXKColorPanel:: [2]*
*PXKColorPicker:: [2]*
*PXKColorWell:: [9]*
     Should be fairly complete; look at the `nscolorwell' test program
     for an example usage.

*PXKControl:: [10]*
     Currently there doesn't seem to be a need for any backend
     implementation because NSControl only defines behaviour and does
     not draw.

*PXKCursor:: [6]*
     Does not allow user defined images but standard ibeam and arrow
     cursors can be used.

*PXKCustomImageRep:: [2]*
*PXKDataLink:: [2]*
*PXKDataLinkManager:: [2]*
*PXKDataLinkPanel:: [2]*
*PXKDPSContext:: [6]*
     Has been rewritten for the Display Ghostscript system, but still
     needs many of the methods to be implemented.

*PXKEPSImageRep:: [2]*
*PXKEvent:: [10]*
     Currently there doesn't seem to be a need for any backend
     implementation because NSEvent only defines behaviour and does not
     draw.

*PXKFont:: [9]*
     Practically complete including AFM and glyph methods.

*PXKFontManager:: [6]*
     Now queries the Display Ghostscript System for the available fonts
     and parses AFM file for glyph information.

*PXKFontPanel:: [2]*
*PXKForm:: [10]*
     Currently there doesn't seem to be a need for any backend
     implementation because NSForm only defines behaviour and does not
     draw.

*PXKFormCell:: [10]*
     Currently there doesn't seem to be a need for any backend
     implementation because NSFormCell manages a pair of
     NSTextFieldCell's which does not require any drawing.

*PXKHelpPanel:: [2]*
*PXKImage:: [4]*
     Usable enough to display some TIFF images.

*PXKImageRep:: [4]*
     Usable enough to display some TIFF images.

*PXKMenu:: [10]*
     The implementation has been completely changed, the menus have the
     look and feel of NeXTStep menus. The implementation uses only
     AppKit classes to do all the drawings and event handling and some
     Xlib functions to do some low level things like moving the window
     menus on screen and creation of these windows.

*PXKMenuItem:: [9]*
     The logic is made in the GUI library, here only the drawing is
     done.

*PXKOpenPanel:: [2]*
*PXKPageLayout:: [2]*
*PXKPanel:: [2]*
*PXKPasteboard:: [2]*
*PXKPopUpButton:: [2]*
*PXKPrinter:: [2]*
*PXKPrintinfo:: [2]*
*PXKPrintOperation:: [2]*
*PXKPrintPanel:: [2]*
*PXKResponder:: [10]*
     Currently there doesn't seem to be a need for any backend
     implementation because NSResponder only defines behaviour and does
     not draw.

*PXKSavePanel:: [2]*
*PXKScreen:: [6]*
     Maintains screen number for the X Window System, but knows nothing
     about window depth.

*PXKScroller:: [9]*
     Should be complete.

*PXKScrollView:: [9]*
     Should be complete; needs to be more efficient.

*PXKSelection:: [2]*
*PXKSlider:: [10]*
     Currently there doesn't seem to be a need for any backend
     implementation because NSSlider only defines behaviour and does
     not draw.

*PXKSliderCell:: [10]*
     Should be complete.

*PXKSpellChecker:: [2]*
*PXKSpellServer:: [2]*
*PXKSplitView:: [2]*
*PXKText:: [2]*
*PXKTextField:: [5]*
     Now handles arrow keys, cursor placement with mouse, and optimizes
     drawing.

*PXKTextFieldCell:: [5]*
     Now uses the Display Ghostscript System and functional NSFont
     class.

*PXKView:: [8]*
     Minor implementation to handle focusing of the view with the
     Display Ghostscript System.

*PXKWindow:: [6]*
     Can create, destroy, and size windows.  Initial implementation of
     backing store.  Cursor rectangles are implemented; look at the
     `nscursor' test program for an example.

*PXKWorkspace:: [2]*
Protocols
=========

   The GNUstep GUI X/DPS Backend does not define any protocols.

Functions
=========

   Many of the functions are not implemented; all the functions dealing
with drawing will need to be implemented in the backend.

Rectangle Drawing Functions
---------------------------

*Optimize Drawing. [9]*
      - Function: void NSEraseRect (NSRect ARECT )
          Erases the rectange by filling it with white.

      - Function: void NSHighlightRect (NSRect ARECT )
          Not implemented.

      - Function: void NSRectClip (NSRect ARECT )
          Not implemented.

      - Function: void NSRectClipList (const NSRect * RECTS, int COUNT )
          Not implemented.

      - Function: void NSRectFill (NSRect ARECT )
          Fill rectangle with current color.

      - Function: void NSRectFillList (const NSRect * RECTS, int COUNT )
          Fill list of rectangles with current color.

      - Function: void NSRectFillListWithGrays (const NSRect * RECTS,
               const float * GRAYS, int COUNT )
          Fill list of rectangles with list of gray colors.

*Draw a Bordered Rectangle. [7]*
      - Function: void NSDrawButton (NSRect ARECT, NSRect CLIPRECT )
          Uses a PostScript wrapped procedure for drawing a button.

      - Function: void NSDrawGrayBezel (NSRect ARECT, NSRect CLIPRECT )
          Uses a PostScript wrapped procedure to draw a gray bezel
          border.

      - Function: void NSDrawGroove (NSRect ARECT, NSRect CLIPRECT )
          Uses a PostScript wrapped procedure to draw a groove border.

      - Function: NSRect NSDrawTiledRects (NSRect BOUNDSRECT, NSRect
               CLIPRECT, const NSRectEdge * SIDES, const float * GRAYS,
               int COUNT )
          Not implemented.

      - Function: void NSDrawWhiteBezel (NSRect ARECT, NSRect CLIPRECT )
          Uses a PostScript wrapped procedure to draw a white bezel
          border.

      - Function: void NSFrameRect (NSRect ARECT )
          Uses a PostScript wrapped procedure to draw a frame rect.

      - Function: void NSFrameRectWithWidth (NSRect ARECT, float
               FRAMEWIDTH )
          Uses a PostScript wrapped procedure to draw a frame rect.

Color Functions
---------------

*Get Information About Color Space and Window Depth. [0]*
      - Function: void NSWindowDepth * NSAvailableWindowDepths ( void )

      - Function: NSWindowDepth NSBestDepth (NSString * COLORSPACE, int
               BITSPERSAMPLE, int BITSPERPIXEL, BOOL PLANAR, BOOL *
               EXACTMATCH)

      - Function: int NSBitsPerPixelFromDepth (NSWindowDepth DEPTH)

      - Function: int NSBitsPerSampleFromDepth (NSWindowDepth DEPTH)

      - Function: NSString * NSColorSpaceFromDepth (NSWindowDepth DEPTH)

      - Function: int NSNumberOfColorComponents (NSString *
               COLORSPACENAME)

      - Function: BOOL NSPlanarFromDepth (NSWindowDepth DEPTH)

*Read the Color at a Screen Position. [0]*
      - Function: NSColor * NSReadPixel (NSPoint LOCATION)

Text Functions
--------------

     These functions may become obsolete when we move to the newer
     NSText system.

*Filter Characters Entered into a Text Object. [0]*
      - Function: unsigned short NSEditorFilter (unsigned short
               THECHAR, int FLAGS, NSStringEncoding THEENCODING)

      - Function: unsigned short NSFieldFilter (unsigned short THECHAR,
               int FLAGS, NSStringEncoding THEENCODING)

*Calculate or Draw a Line of Text (in Text Object). [0]*
      - Function: int NSDrawALine (id SELF, NSLayInfo * LAYINFO)

      - Function: int NSScanALine (id SELF, NSLayInfo * LAYINFO)

*Calculate Font Ascender, Descender, and Line Height (in Text Object). [0]*
      - Function: void NSTextFontInfo (id FID, float * ASCENDER, float
               * DESCENDER, float * LINEHEIGHT)

*Access Text Object's Word Tables. [0]*
      - Function: NSData * NSDataWithWordTable (const unsigned char *
               SMARTLEFT, const unsigned char * SMARTRIGHT, const
               unsigned char * CHARCLASSES, const NSFSM * WRAPBREAKS,
               int WRAPBREAKSCOUNT, const NSFSM * CLICKBREAKS, int
               CLICKBREAKSCOUNT, BOOL CHARWRAP)

      - Function: void NSReadWordTable (NSZone * ZONE, NSData * DATA,
               unsigned char ** SMARTLEFT, unsigned char ** SMARTRIGHT,
               unsigned char ** CHARCLASSES, NSFSM ** WRAPBREAKS, int *
               WRAPBREAKSCOUNT, NSFSM ** CLICKBREAKS, int *
               CLICKBREAKSCOUNT, BOOL * CHARWRAP)

Array Allocation Functions for Use by the NSText Class
------------------------------------------------------

      - Function: NSTextChunk * NSChunkCopy (NSTextChunk * PC,
               NSTextChunk * DPC)

      - Function: NSTextChunk * NSChunkGrow (NSTextChunk * PC, int
               NEWUSED)

      - Function: NSTextChunk * NSChunkMalloc (int GROWBY, int INITUSED)

      - Function: NSTextChunk * NSChunkRealloc (NSTextChunk * PC)

      - Function: NSTextChunk * NSChunkZoneCopy (NSTextChunk * PC,
               NSTextChunk * DPC, NSZone * ZONE)

      - Function: NSTextChunk * NSChunkZoneGrow (NSTextChunk * PC, int
               NEWUSED, NSZone * ZONE)

      - Function: NSTextChunk * NSChunkZoneMalloc (int GROWBY, int
               INITUSED, NSZone * ZONE)

      - Function: NSTextChunk * NSChunkZoneRealloc (NSTextChunk * PC,
               NSZone * ZONE)

Imaging Functions
-----------------

*Copy an Image. [0]*
      - Function: void NSCopyBitmapFromGState (int SRCGSTATE, NSRect
               SRCRECT, NSRect DESTRECT)

      - Function: void NSCopyBits (int SRCGSTATE, NSRect SRCRECT,
               NSPoint DESTPOINT)

*Render Bitmap Images. [0]*
      - Function: void NSDrawBitmap (NSRect RECT, int PIXELSWIDE, int
               PIXELSHIGH, int BITSPERSAMPLE, int SAMPLESPERPIXEL, int
               BITSPERPIXEL, int BYTESPERROW, BOOL ISPLANAR, BOOL
               HASALPHA, NSString * COLORSPACENAME, const unsigned char
               * const DATA[5]);

Attention Panel Functions
-------------------------

*Create an Attention Panel without Running It Yet. [0]*
      - Function: id NSGetAlertPanel (NSString * TITLE, NSString * MSG,
               NSString * DEFAULTBUTTON, NSString * ALTERNATEBUTTON,
               NSString * OTHERBUTTON, ...)

*Create and Run an Attention Panel. [0]*
      - Function: int NSRunAlertPanel (NSString * TITLE, NSString *
               MSG, NSString * DEFAULTBUTTON, NSString *
               ALTERNATEBUTTON, NSString * OTHERBUTTON, ...)

      - Function: int NSRunLocalizedAlertPanel (NSString * TABLE,
               NSString * TITLE, NSString * MSG, NSString *
               DEFAULTBUTTON, NSString * ALTERNATEBUTTON, NSString *
               OTHERBUTTON, ...)

*Release an Attention Panel. [0]*
      - Function: void NSReleaseAlertPanel (id PANEL)

Services Menu Functions
-----------------------

*Determine Whether an Item is Included in Services Menus. [0]*
      - Function: int NSSetShowsServicesMenuItem (NSString * ITEM, BOOL
               SHOWSERVICE)

      - Function: BOOL NSShowsServicesMenuItem (NSString * ITEM)

*Programmatically Invoke a Service. [0]*
      - Function: BOOL NSPerformService (NSString * ITEM, NSPasteboard
               * PBOARD)

*Force Services Menu to Update Based on New Services. [0]*
      - Function: void NSUpdateDynamicServices (void)

Miscellaneous Functions
-----------------------

*Play the System Beep. [0]*
      - Function: void NSBeep (void)

*Return File-related Pasteboard Types. [0]*
      - Function: NSString * NSCreateFileContentsPboardType (NSString *
               FILETYPE)

      - Function: NSString * NSCreateFilenamePboardType (NSString *
               FILENAME)

      - Function: NSString * NSGetFileType (NSString * PBOARDTYPE)

      - Function: NSArray * NSGetFileTypes (NSArray * PBOARDTYPES)

*Draw a Distinctive Outline around Linked Data. [0]*
      - Function: void NSFrameLinkRect (NSRect ARECT, BOOL
               ISDESTINATION)

      - Function: float NSLinkFrameThickness (void)

*Convert an Event Mask Type to a Mask. [0]*
      - Function: unsigned int NSEventMaskFromType (NSEventType TYPE)

