This is an abstract class which provides a framework for a
device independant drawing.
In addition, this class provides methods to perform the
actual drawing. As a convenience, you can also access
these through various function interfaces. One is a
Display Postscript interface using PS and DPS
operations. Another is a Quartz interface (not yet
written).
Warning the underscore at the start of the
name of this instance variable indicates that, even
though it is not technically private, it is
intended for internal use within the package, and
you should not use the variable in other code.
Warning the underscore at the start of the
name of this instance variable indicates that, even
though it is not technically private, it is
intended for internal use within the package, and
you should not use the variable in other code.
Warning the underscore at the start of the
name of this instance variable indicates that, even
though it is not technically private, it is
intended for internal use within the package, and
you should not use the variable in other code.
Warning the underscore at the start of the
name of this instance variable indicates that, even
though it is not technically private, it is
intended for internal use within the package, and
you should not use the variable in other code.
Warning the underscore at the start of the
name of this instance variable indicates that, even
though it is not technically private, it is
intended for internal use within the package, and
you should not use the variable in other code.
Warning the underscore at the start of the
name of this instance variable indicates that, even
though it is not technically private, it is
intended for internal use within the package, and
you should not use the variable in other code.
Warning the underscore at the start of the
name of this instance variable indicates that, even
though it is not technically private, it is
intended for internal use within the package, and
you should not use the variable in other code.
Read raw pixels from the device and return the
information as a bitmap. Pixels are read from
the smallest device-pixel aligned rectangle
containing rect (defined in the
current graphics state and clipped to the current
window, but not against the clipping path). If
the resulting device rectangle is degenerate, Size
will be (0,0) and Data will be nil, but
the other entries in the dictionary will be filled
in.
If the device does not support the operation, returns
nil.
The returned dictionary contains at least the
following keys:
Data
An NSData-instance with the image data.
Size
An NSValue/NSSize with the size in pixels of the
returned image data.
BitsPerSample
An NSValue/unsigned int.
SamplesPerPixel
An NSValue/unsigned int.
ColorSpace
An NSString with the name of the color space the
data is in.
HasAlpha
An NSValue/unsigned int. 0 if the
returned image does not have an alpha channel,
1 if it does.
Matrix
An NSAffineTransform-instance that contains the
transform between current user space and
image space for this image.
This method is used by the backend, but has been
rendered obsolete. Do not use it in any code or in
any backend implementation as it may disappear at any
point.
Generic method to render bitmap images. This method
shouldn't be used anywhere except in the AppKit
itself. It will be replaced by the more flexible
GSDrawImage method sometime in the future.
(Quartz).
Displays a string as in DPSshow, except that (
x,y) is added to the advancement of every
glyph. An alternative means of achieving the same
effect is to use the
-GSSetCharacterSpacing:
method. Either approach should be more efficient
that using
-DPSshow:
with appropriate
-DPSrmoveto::
operations.
Displays a string as in a combination of DPSashow
and DPSwidthshow: (ax,ay) is added to the
advancement of every glyph, while (
cx,cy) is also added to the advancement
for character c's glyph specifically. Using this method
should be more efficient that using
-DPSshow:
with appropriate
-DPSrmoveto::
operations.
Appends to the current path a path that is
equivalent to the outlines of the glyphs in the
string. This results in a path that can be used for
stroking, filling or clipping (DPS).
Returns the gray-level equivalent in the current
color space. The value may depend on the current
color space and may be 0 if the current color space
has no notion of a gray value (DPS)
Pops a previously saved gstate from the gstate stack
and makes it current. Drawing information in the
previously saved gstate becomes the current
information. (DPS, Quartz).
Saves (pushes) a copy of the current gstate
information onto the gstate stack. This saves
drawing information contained in the gstate, such
as the current path, ctm and colors. (DPS, Quartz).
Sets the alpha drawing component. For this and other
color setting commands that have no differentiation
between fill and stroke colors, both the fill and
stroke alpha are set (DPS).
Sets the current colorspace to Device CMYK and the
current color based on the indicated values. For
this and other color setting commands that have no
differentiation between fill and stroke
colors, both the fill and stroke colors are set
(DPS).
Makes the gstate indicated by the tag gst
the current gstate. Note that the gstate is copied, so
that changes to either gstate do not affect the other.
(DPS, Quartz).
Displays a string as in DPSshow, except that, for
character c only, the glpyh
x and y advancement is
determined by the values (x,y),
instead of by the glyph itself. This is often used
to adjust the length of a line of text by changing the
width of the space character. Using this method
should be more efficient than using
-DPSshow:
with appropriate
-DPSrmoveto::
operations.
Displays a string as in DPSshow, except that the
glyph x advancement is determined by the values in
numarray, one for each glyph, instead of
by the glyphs themselves. size should be
equal to the length of s in glyphs. Using
this method should be more efficient than using
-DPSshow:
with appropriate
-DPSrmoveto::
operations.
Displays a string as in DPSshow, except that the
glyph x and y advancement is determined by the values
in numarray, one x and one y for each glyph,
in alternating order, instead of by the glyphs
themselves. size should be equal to
the length of s in glyphs. Using this method
should be more efficient than using
-DPSshow:
with appropriate
-DPSrmoveto::
operations.
Displays a string as in DPSshow, except that the
glyph y advancement is determined by the values in
numarray, one for each glyph, instead of
by the glyphs themselves. size should be
equal to the length of s in glyphs. Using
this method should be more efficient than using
-DPSshow:
with appropriate
-DPSrmoveto::
operations.
This is a private method used between the window
server and the context. It should not be used in any
application. Typically used by the window
server to find out what window the context is
drawing graphics to. The device pointer
is an opaque type that contains information about the
window. The x and y pointers
indicate the offset of the origin of the window
from the lower left-hand corner
Creates a copy of the current gstate and associates
it with a tag, which is given in the return value. This
tag can later be used in
-DPSsetgstate:
to set the gstate as being current again. (DPS, Quartz).
Generic method to draw an image into a
rect. The image is defined by
imageref, an opaque structure. Support for
this method hasn't been implemented yet, so it should
not be used anywhere.
Use this method to set the additional spacing between
characters (glyphs). This spacing is added to
the normal spacing for each character. Units are in
text-space coordinate system. (Quartz).
This is a private method used between the window
server and the context. It should not be used in any
application. Typically called by the window
server to tell the context what window it should
draw graphics to. The device pointer is an
opaque type that contains information about the
window. The x and y values
tell the context that it should put the origin of the
transform matrix at the indicated x
and y values from the lower left-hand corner
of the window
Sets the current color for fill operations. The
values array should have n components,
where n corresponds to the number of color components
required to specify the color in the current
colorspace (Quartz).
Sets the current color for stroke operations. The
values array should have n components,
where n corresponds to the number of color components
required to specify the color in the current
colorspace (Quartz).
Sets the colorspace for stroke operations based on the
values in the supplied dictionary. See
-GSSetFillColorspace:
for a description of the values that need to be
supplied (Quartz).
Set the transfer function for transforming text from
text space to user space. This transform is only
applied to text objects and is in addition to the
normal coordinate transform matrix. When drawing
text, this transform is applied before the normal
CTM.
The text matrix can be changed by either modifying it
directly, or just by drawing text, in which
case the tx and ty offset veriables are modified to
point to the location of the next character that
could be rendered (Quartz).
Disassociates the tag gst with
it's gstate and destroys the gstate object. The tag
will no longer be valid and should not be used to
refer to the gstate again. (DPS, Quartz).
An empty method provided for subclasses to override.
Draws a gstate in a way that fully respects the
destination transform, unlike the GSComposite
operator which ignores the rotation and the
scaling effect on the content. Note: For the
GScomposite operator, the scaling and rotation
affects the destination point but not the content.
An empty method provided for subclasses to override.
Returns whether the backend supports a GSDraw
operator. By default, returns NO.
When a GSContext backend subclass overrides
this method to return YES, the backend
must also implement
-drawGState:fromRect:toPoint:op:fraction:
in its GSState subclass. When YES is returned, -[NSImage drawXXX] methods that involves rotation, scaling etc. will delegate as much as possible the image drawing to the backend, rather than trying to emulate the resulting image in Gui by using intermediate images to rotate and scale the content, and then composite the result with -GScomposite:toPoint:fromRect:operation:fraction:
. Backends which doesn't implement -compositeGState:fromRect:toPoint:op:fraction:
can draw rotated or scaled images, but the semantic won't exactly match the NSImage documentation in non-trivial cases.