bionic (3) Damage.3U.gz

Provided by: ivtools-dev_1.2.11a1-11_amd64 bug

NAME

       Damage - repairs damaged graphics

SYNOPSIS

       #include <Unidraw/Graphic/damage.h>

DESCRIPTION

       Damage  objects  store  damaged areas of a graphic for subsequent incremental repair.  Areas of a graphic
       are "damaged" if they need to be redrawn for any reason, e.g., if their state has  been  modified  or  if
       under/overlapping  graphics  change  their  appearance.   Damage  objects  try  to minimize the amount of
       redrawing needed to repair a graphic.  They are most useful when the graphic is complicated  enough  that
       it  would be undesirable to redraw the entire canvas when the graphic is modified.  Damage objects do not
       eliminate the need for an interactor's Redraw member function, though they could be used to implement it.

PUBLIC OPERATIONS

       Damage(Canvas* = nil, Painter* = nil, Graphic* = nil)
              Create a new Damage object for a graphic on the given  canvas.   The  painter  is  used  to  erase
              damaged areas using its ClearRect function prior to redrawing them.

       virtual void Incur(Graphic*)
       virtual void Incur(BoxObj&)
       virtual void Incur(
           Coord left, Coord bottom, Coord right, Coord top
       )
              Notify  the  damage object that a rectangular area has been damaged, either by passing the graphic
              that contributed the area or the area itself.

       virtual void Added(Graphic*)
              Notify the damage object that the given graphic was appended (not inserted)  to  the  graphic  but
              never drawn.  The damage object can thus be responsible for drawing newly added graphics as well.

       virtual void Repair()
              Repair  all  damage incurred since the last Repair (or since the damage object was created if this
              is the first Repair).

       virtual void Reset()
              Reset the damage object.  Any damage incurred is lost.

       virtual boolean Incurred()
              Returns true if any damage has been incurred.

       void SetCanvas(Canvas*)
       void SetPainter(Painter*)
       void SetGraphic(Graphic*)

       Canvas* GetCanvas()
       Painter* GetPainter()
       Graphic* GetGraphic()
              Set and get attributes of the damage object.

PROTECTED OPERATIONS

       int Area(BoxObj&)
              A helper function that returns the area in square pixels occupied by the given BoxObj.

       virtual void DrawAreas()
       virtual void DrawAdditions()
              Explicitly draw the areas of incurred and added damage, respectively.

       virtual void Merge(BoxObj&)
              Merge the given BoxObj into the list of incur-damaged areas, coalescing it into an  existing  area
              if the number of non-overlapping areas exceeds 2.

       void FirstArea(Iterator&)
       void FirstAddition(Iterator&)
       void Next(Iterator&)
       boolean Done(Iterator)
       BoxObj* GetArea(Iterator)
       Graphic* GetAddition(Iterator)
              Operations  for  iterating  over  the lists of damaged areas (represented with BoxObj objects) and
              added Graphics.  FirstArea and FirstAddition initialize the iterator to point to the first item on
              the  corresponding  list, Next advances the iterator, and Done returns true if the iterator points
              beyond the end of the list.  GetArea and GetAddition return the BoxObj or  Graphic  to  which  the
              iterator points.

       UList* Elem(Iterator)
              A  helper  function  for  returning  the  UList to which an iterator points.  The _areas protected
              member is a UList that stores the list of damaged areas, and the _additions protected  stores  the
              list of added graphics.

       void DeleteArea(BoxObj*)
       void DeleteAreas()
              DeleteArea is a helper function for deleting the storage associated with a damaged area, including
              the area itself and the UList element.  DeleteAreas is a helper function that deletes the list  of
              damaged areas.

SEE ALSO

       Canvas(3I), Graphic(3U), Iterator(3U), Painter(3I), UList(3U), geomobjs(3U)