module Fox # # Line segment # class FXSegment # x-coordinate of the starting point [Integer] attr_accessor :x1 # y-coordinate of the starting point [Integer] attr_accessor :y1 # x-coordinate of the endpoint [Integer] attr_accessor :x2 # y-coordinate of the endpoint [Integer] attr_accessor :y2 end # # Arc # class FXArc # x-coordinate of center point [Integer] attr_accessor :x # y-coordinate of center point [Integer] attr_accessor :y # Width [Integer] attr_accessor :w # Height [Integer] attr_accessor :h # Start of the arc, relative to the three-o'clock position from the center, in units of degrees * 64 [Integer] attr_accessor :a # Path and extent of the arc, relative to the three-o'clock position from the center, in units of degrees * 64 [Integer] attr_accessor :b end # # A device context is used to maintain the state of the graphics drawing system. # Defining your drawing code in terms of the Abstract Device Context allows the # drawing commands to be rendered on different types of surfaces, such as windows # and images (FXDCWindow), or on paper (FXDCPrint). # WYSYWYG may be obtained by using the same identical drawing code in your # application regardless of the actual device surface being utilized. # # === Drawing (BITBLT) functions # # +BLT_CLR+:: D := 0 # +BLT_SRC_AND_DST+:: D := S & D # +BLT_SRC_AND_NOT_DST+:: D := S & ~D # +BLT_SRC+:: D := S # +BLT_NOT_SRC_AND_DST+:: D := ~S & D # +BLT_DST+:: D := D # +BLT_SRC_XOR_DST+:: D := S ^ D # +BLT_SRC_OR_DST+:: D := S | D # +BLT_NOT_SRC_AND_NOT_DST+:: D := ~S & ~D == D := ~(S | D) # +BLT_NOT_SRC_XOR_DST+:: D := ~S ^ D # +BLT_NOT_DST+:: D := ~D # +BLT_SRC_OR_NOT_DST+:: D := S | ~D # +BLT_NOT_SRC+:: D := ~S # +BLT_NOT_SRC_OR_DST+:: D := ~S | D # +BLT_NOT_SRC_OR_NOT_DST+:: D := ~S | ~D == ~(S & D) # +BLT_SET+:: D := 1 # # === Line Styles # # +LINE_SOLID+:: Solid lines # +LINE_ONOFF_DASH+:: On-off dashed lines # +LINE_DOUBLE_DASH+:: Double dashed lines # # === Line Cap Styles # # +CAP_NOT_LAST+:: Don't include last end cap # +CAP_BUTT+:: Butting line end caps # +CAP_ROUND+:: Round line end caps # +CAP_PROJECTING+:: Projecting line end caps # # === Line Join Styles # # +JOIN_MITER+:: Mitered or pointy joints # +JOIN_ROUND+:: Round line joints # +JOIN_BEVEL+:: Beveled or flat joints # # === Fill Styles # # +FILL_SOLID+:: Fill with solid color # +FILL_TILED+:: Fill with tiled bitmap # +FILL_STIPPLED+:: Fill where stipple mask is 1 # +FILL_OPAQUESTIPPLED+:: Fill with foreground where mask is 1, background otherwise # # === Fill Rules # # +RULE_EVEN_ODD+:: Even odd polygon filling # +RULE_WINDING+:: Winding rule polygon filling # # === Stipple/dither patterns # # STIPPLE_0:: Stipple pattern 0 # STIPPLE_NONE:: Stipple pattern 0 # STIPPLE_BLACK:: All ones # STIPPLE_1:: Stipple pattern 1 # STIPPLE_2:: Stipple pattern 2 # STIPPLE_3:: Stipple pattern 3 # STIPPLE_4:: Stipple pattern 4 # STIPPLE_5:: Stipple pattern 5 # STIPPLE_6:: Stipple pattern 6 # STIPPLE_7:: Stipple pattern 7 # STIPPLE_8:: Stipple pattern 8 # STIPPLE_GRAY:: 50% gray # STIPPLE_9:: Stipple pattern 9 # STIPPLE_10:: Stipple pattern 10 # STIPPLE_11:: Stipple pattern 11 # STIPPLE_12:: Stipple pattern 12 # STIPPLE_13:: Stipple pattern 13 # STIPPLE_14:: Stipple pattern 14 # STIPPLE_15:: Stipple pattern 15 # STIPPLE_16:: Stipple pattern 16 # STIPPLE_WHITE:: All zeroes # STIPPLE_HORZ:: Horizontal hatch pattern # STIPPLE_VERT:: Vertical hatch pattern # STIPPLE_CROSS:: Cross-hatch pattern # STIPPLE_DIAG:: Diagonal // hatch pattern # STIPPLE_REVDIAG:: Reverse diagonal \\ hatch pattern # STIPPLE_CROSSDIAG:: Cross-diagonal hatch pattern class FXDC # Application [FXApp] attr_reader :app # Foreground drawing color [FXColor] attr_accessor :foreground # Background drawing color [FXColor] attr_accessor :background # Dash pattern [String] attr_reader :dashPattern # Dash offset [Integer] attr_reader :dashOffset # Dash length [Integer] attr_reader :dashLength # Line width; a line width of zero means thinnest and fastest possible [Integer] attr_accessor :lineWidth # Line cap style, one of +CAP_NOT_LAST+, +CAP_BUTT+, +CAP_ROUND+ or +CAP_PROJECTING+ [Integer] attr_accessor :lineCap # Line join style, one of +JOIN_MITER+, +JOIN_ROUND+ or +JOIN_BEVEL+ [Integer] attr_accessor :lineJoin # Line style, one of +LINE_SOLID+, +LINE_ONOFF_DASH+ or +LINE_DOUBLE_DASH+ [Integer] attr_accessor :lineStyle # Fill style, one of +FILL_SOLID+, +FILL_TILED+, +FILL_STIPPLED+ or +FILL_OPAQUESTIPPLED+ [Integer] attr_accessor :fillStyle # Fill rule, one of +RULE_EVEN_ODD+ or +RULE_WINDING+ [Integer] attr_accessor :fillRule # Raster op function, one of +BLT_CLR+, +BLT_SRC+, +BLT_DST+, etc. (see list above) [Integer] attr_accessor :function # Tile image [FXImage] attr_accessor :tile # Stipple pattern [FXBitmap or Integer] attr_accessor :stipple # Clip region [FXRegion] attr_writer :clipRegion # Clip rectangle [FXRectangle] attr_reader :clipRectangle # X-coordinate of clip rectangle [Integer] attr_reader :clipX # Y-coordinate of clip rectangle [Integer] attr_reader :clipY # Width of clip rectangle, in pixels [Integer] attr_reader :clipWidth # Height of clip rectangle, in pixels [Integer] attr_reader :clipHeight # Font to draw text with [FXFont] attr_accessor :font # Construct dummy DC def initialize(app) ; end # # Returns a color value (i.e. an FXColor) for the pixel at (_x_, _y_). # # ==== Parameters: # # +x+:: x-coordinate of the pixel of interest [Integer] # +y+:: y-coordinate of the pixel of interest [Integer] # def readPixel(x, y) ; end # # Draw a point at (_x_, _y_) in the current foreground drawing color. # # ==== Parameters: # # +x+:: x-coordinate of the point [Integer] # +y+:: y-coordinate of the point [Integer] # # See also #drawPoints and #drawPointsRel. # def drawPoint(x, y) ; end # # Draw multiple points, where _points_ is an array of FXPoint instances. # # ==== Parameters: # # +points+:: array of FXPoint instances [Array] # # See also #drawPoint and #drawPointsRel. # def drawPoints(points) ; end # # Draw multiple points, where _points_ is an array of FXPoint instances. # Unlike #drawPoints, where each of the points is drawn relative to the # origin, #drawPointsRel treats all coordinates after the first as relative # to the previous point. # # ==== Parameters: # # +points+:: array of FXPoint instances [Array] # # See also #drawPoint and #drawPoints. # def drawPointsRel(points) ; end # # Draw the line from (x1, y1) to (x2, y2). # # ==== Parameters: # # x1:: x-coordinate of the starting point [Integer] # y1:: y-coordinate of the starting point [Integer] # x2:: x-coordinate of the ending point [Integer] # y2:: y-coordinate of the ending point [Integer] # # See also #drawLines and #drawLinesRel. # def drawLine(x1, y1, x2, y2) ; end # # Draw connected lines, where _points_ is an array of FXPoint instances. # The number of lines drawn is equal to the size of the _points_ # array minus one. # Treats all points' coordinates as relative to the origin. # # ==== Parameters: # # +points+:: array of FXPoint instances that defines all points on the line [Array] # # See also #drawLine and #drawLinesRel. # def drawLines(points) ; end # # Draw connected lines, where _points_ is an array of FXPoint instances. # The number of lines drawn is equal to the size of the _points_ # array minus one. # Treats each point's coordinates (after the first) as relative to # the previous point. # # ==== Parameters: # # +points+:: array of FXPoint instances that defines all points on the line [Array] # # See also #drawLine and #drawLines. # def drawLinesRel(points) ; end # # Draw mutiple, unconnected lines (i.e. line segments), where _segments_ is # an array of FXSegment instances. # # === Parameters: # # +segments+:: an array of FXSegment instances [Array] # def drawLineSegments(segments) ; end # # Draw rectangle with upper-left corner at (_x_, _y_) and with width and height (_w_, _h_). # # === Parameters: # # +x+:: x-coordinate of upper-left corner of the rectangle [Integer] # +y+:: y-coordinate of upper-left corner of the rectangle [Integer] # +w+:: width of the rectangle, in pixels [Integer] # +h+:: height of the rectangle, in pixels [Integer] # # See also #drawRectangles, #fillRectangle and #fillRectangles. # def drawRectangle(x, y, w, h) ; end # # Draw multiple rectangles, where _rectangles_ is an array of FXRectangle instances. # # === Parameters: # # +rectangles+:: an array of FXRectangle instances [Array] # # See also #drawRectangle, #fillRectangle and #fillRectangles. # def drawRectangles(rectangles) ; end # # Draw a rounded rectangle with ellipse width _ew_ and ellipse height _eh_. # # === Parameters: # # x:: x-coordinate of the upper left corner of the bounding rectangle [Integer] # y:: y-coordinate of the upper left corner of the bounding rectangle [Integer] # w:: width of the bounding rectangle, in pixels [Integer] # h:: height of the bounding rectangle, in pixels [Integer] # def drawRoundRectangle(x, y, w, h, ew, eh); end # # Draw an arc. # The argument start specifies the start of the arc relative to # the three-o'clock position from the center, in units of degrees*64. # The argument extent specifies the path and extent of the arc, # relative to the start of the arc (also in units of degrees*64). # The arguments _x_, _y_, _w_, and _h_ specify the bounding rectangle # of the arc. # # === Parameters: # # x:: x-coordinate of the upper left corner of the bounding rectangle [Integer] # y:: y-coordinate of the upper left corner of the bounding rectangle [Integer] # w:: width of the bounding rectangle, in pixels [Integer] # h:: height of the bounding rectangle, in pixels [Integer] # start:: starting angle of the arc, in 64ths of a degree [Integer] # extent:: the path and extent of the arc, relative to the start of the arc (in 64ths of a degree) [Integer] # # See also #drawArcs, #fillArc and #fillArcs. # def drawArc(x, y, w, h, start, extent) ; end # # Draw arcs, where _arcs_ is an array of FXArc instances. # # === Parameters: # # +arcs+:: an array of FXArc instances [Array] # # See also #drawArc, #fillArc and #fillArcs. # def drawArcs(arcs) ; end # # Draw an ellipse. # def drawEllipse(x, y, w, h); end # # Draw filled rectangle with upper-left corner at (_x_, _y_) and with width and height (_w_, _h_). # # === Parameters: # # +x+:: x-coordinate of the upper left corner of the rectangle [Integer] # +y+:: y-coordinate of the upper left corner of the rectangle [Integer] # +w+:: width of the rectangle, in pixels [Integer] # +h+:: height of the rectangle, in pixels [Integer] # # See also #drawRectangle, #drawRectangles and #fillRectangles. # def fillRectangle(x, y, w, h) ; end # # Draw filled rectangles, where _rectangles_ is an array of FXRectangle instances. # # === Parameters: # # +rectangles+:: an array of FXRectangle instances [Array] # # See also #drawRectangle, #drawRectangles and #fillRectangle. # def fillRectangles(rectangles) ; end # # Draw a filled rounded rectangle with ellipse width _ew_ and ellipse height _eh_. # # === Parameters: # # x:: x-coordinate of the upper left corner of the bounding rectangle [Integer] # y:: y-coordinate of the upper left corner of the bounding rectangle [Integer] # w:: width of the bounding rectangle, in pixels [Integer] # h:: height of the bounding rectangle, in pixels [Integer] # def fillRoundRectangle(x, y, w, h, ew, eh); end def fillChord(x, y, w, h, ang1, ang2) ; end def fillChords(chords, nchords) ; end # # Draw filled arc (see documentation for #drawArc). # # === Parameters: # # x:: x-coordinate of the upper left corner of the bounding rectangle [Integer] # y:: y-coordinate of the upper left corner of the bounding rectangle [Integer] # w:: width of the bounding rectangle, in pixels [Integer] # h:: height of the bounding rectangle, in pixels [Integer] # start:: starting angle of the arc, in 64ths of a degree [Integer] # extent:: the path and extent of the arc, relative to the start of the arc (in 64ths of a degree) [Integer] # # See also #drawArc, #drawArcs and #fillArcs. # def fillArc(x, y, w, h, start, extent) ; end # # Draw filled arcs, where _arcs_ is an array of FXArc instances. # # === Parameters: # # +arcs+:: an array of FXArc instances [Array] # # See also #drawArc, #drawArcs and #fillArc. # def fillArcs(arcs) ; end # # Draw a filled ellipse. # def fillEllipse(x, y, w, h); end # # Draw filled polygon, where _points_ is an array of FXPoint instances. # # === Parameters: # # +points+:: an array of FXPoint instances [Array] # def fillPolygon(points) ; end # # Draw filled polygon, where _points_ is an array of FXPoint instances. # # === Parameters: # # +points+:: an array of FXPoint instances [Array] # def fillConcavePolygon(points) ; end # # Draw filled polygon, where _points_ is an array of FXPoint instances. # # === Parameters: # # +points+:: an array of FXPoint instances [Array] # def fillComplexPolygon(points) ; end # # Draw filled polygon with relative points, where _points_ is an array of FXPoint instances. # # === Parameters: # # +points+:: an array of FXPoint instances [Array] # def fillPolygonRel(points) ; end # # Draw filled polygon with relative points, where _points_ is an array of FXPoint instances. # # === Parameters: # # +points+:: an array of FXPoint instances [Array] # def fillConcavePolygonRel(points) ; end # # Draw filled polygon with relative points, where _points_ is an array of FXPoint instances. # # === Parameters: # # +points+:: an array of FXPoint instances [Array] # def fillComplexPolygonRel(points) ; end # # Draw hashed box with upper-left corner at (_x_, _y_) and with width and height (_w_, _h_). # # === Parameters: # # +x+:: x-coordinate of the upper left corner [Integer] # +y+:: y-coordinate of the upper left corner [Integer] # +w+:: width of the box, in pixels [Integer] # +h+:: height of the box, in pixels [Integer] # +b+:: border width, in pixels [Integer] # def drawHashBox(x, y, w, h, b=1) ; end # # Draw focus rectangle with upper-left corner at (_x_, _y_) and with width and height (_w_, _h_). # # === Parameters: # # +x+:: x-coordinate of the upper left corner [Integer] # +y+:: y-coordinate of the upper left corner [Integer] # +w+:: width of the rectangle, in pixels [Integer] # +h+:: height of the rectangle, in pixels [Integer] # def drawFocusRectangle(x, y, w, h) ; end # # Copy some rectangular area from _source_ into the drawable attached to this # device context. # # === Parameters: # # +source+:: the source drawable from which to copy [FXDrawable] # +sx+:: x-coordinate of the upper left corner of the source rectangle [Integer] # +sy+:: y-coordinate of the upper left corner of the source rectangle [Integer] # +sw+:: width of the source rectangle, in pixels [Integer] # +sh+:: height of the source rectangle, in pixels [Integer] # +dx+:: x-coordinate of the the destination point in this drawable [Integer] # +dy+:: y-coordinate of the the destination point in this drawable [Integer] # def drawArea(source, sx, sy, sw, sh, dx, dy) ; end # # Copy some rectangular area from _source_ into the drawable attached to this # device context, stretching it to width _dw_ and height _dh_. # # === Parameters: # # +source+:: the source drawable from which to copy [FXDrawable] # +sx+:: x-coordinate of the upper left corner of the source rectangle [Integer] # +sy+:: y-coordinate of the upper left corner of the source rectangle [Integer] # +sw+:: width of the source rectangle, in pixels [Integer] # +sh+:: height of the source rectangle, in pixels [Integer] # +dx+:: x-coordinate of the the destination point in this drawable [Integer] # +dy+:: y-coordinate of the the destination point in this drawable [Integer] # +dw+:: destination width, in pixels [Integer] # +dh+:: destination height, in pixels [Integer] # def drawArea(source, sx, sy, sw, sh, dx, dy, dw, dh) ; end # # Draw _image_ into the drawable attached to this device context. # # === Parameters: # # +image+:: image to draw [FXImage] # +dx+:: x-coordinate of the the destination point in this drawable [Integer] # +dy+:: y-coordinate of the the destination point in this drawable [Integer] # def drawImage(image, dx, dy) ; end # # Draw _bitmap_ into the drawable attached to this device context. # # === Parameters: # # +bitmap+:: bitmap to draw [FXBitmap] # +dx+:: x-coordinate of the the destination point in this drawable [Integer] # +dy+:: y-coordinate of the the destination point in this drawable [Integer] # def drawBitmap(bitmap, dx, dy) ; end # # Draw _icon_ into the drawable attached to this device context. # # === Parameters: # # +icon+:: icon to draw [FXIcon] # +dx+:: x-coordinate of the the destination point in this drawable [Integer] # +dy+:: y-coordinate of the the destination point in this drawable [Integer] # def drawIcon(icon, dx, dy) ; end # # Draw a shaded version of an icon into the drawable attached to this device context. # This is typically used for drawing disabled labels and buttons. # # === Parameters: # # +icon+:: icon to draw [FXIcon] # +dx+:: x-coordinate of the the destination point in this drawable [Integer] # +dy+:: y-coordinate of the the destination point in this drawable [Integer] # def drawIconShaded(icon, dx, dy) ; end # # Draw a sunken version of an icon into the drawable attached to this device context. # # === Parameters: # # +icon+:: icon to draw [FXIcon] # +dx+:: x-coordinate of the the destination point in this drawable [Integer] # +dy+:: y-coordinate of the the destination point in this drawable [Integer] # def drawIconSunken(icon, dx, dy) ; end # # Draw _string_ at position (_x_, _y_). # # === Parameters: # # +x+:: x-coordinate of the upper left corner [Integer] # +y+:: y-coordinate of the upper left corner [Integer] # +string+:: the text string to draw [String] # # See also #drawImageText. # def drawText(x, y, string) ; end # # Draw _string_ at position (_x_, _y_). # # === Parameters: # # +x+:: x-coordinate of the upper left corner [Integer] # +y+:: y-coordinate of the upper left corner [Integer] # +string+:: the text string to draw [String] # # See also #drawText. # def drawImageText(x, y, string) ; end # # Set dash pattern and dash offset. # A dash pattern of [1, 2, 3, 4] is a repeating pattern of 1 foreground pixel, # 2 background pixels, 3 foreground pixels, and 4 background pixels. # The offset is where in the pattern the system will start counting. # The maximum length of the dash pattern array is 32 elements. # # === Parameters: # # +dashOffset+:: indicates which element of the dash pattern to start with (zero for the beginning) [Integer] # +dashPattern+:: array of integers indicating the dash pattern [Array] # def setDashes(dashOffset, dashPattern) ; end # # Set clip rectangle. # # === Parameters: # # +x+:: x-coordinate of the upper left corner of the clip rectangle [Integer] # +y+:: y-coordinate of the upper left corner of the clip rectangle [Integer] # +w+:: width of the clip rectangle, in pixels [Integer] # +h+:: height of the clip rectangle, in pixels [Integer] # # See also #setClipMask. # def setClipRectangle(x, y, w, h) ; end # # Set clip rectangle. # # === Parameters: # # +rectangle+:: a rectangle that defines the clipping region [Integer] # # See also #setClipMask. # def setClipRectangle(rectangle) ; end # # Clear clipping. # def clearClipRectangle() ; end # # Set clip mask to _bitmap_. # # === Parameters: # # +bitmap+:: a bitmap to use for clipping [FXBitmap] # +dx+:: [Integer] # +dy+:: [Integer] # # See also #setClipRectangle. # def setClipMask(bitmap, dx=0, dy=0) ; end # # Clear clip mask. # def clearClipMask() ; end # # When you call #clipChildren with the argument +true+, anything that you # draw into this window will be clipped by its child windows. In other words, # the child windows "obscure" the parent window. This is the default behavior. # If you call #clipChildren with +false+, anything that you draw into this # window will be visible in its child windows (i.e. the drawing will *not* # be clipped). # # === Parameters: # # +yes+:: if +true+, drawing is clipped against child windows [Boolean] # def clipChildren(yes) ; end end end