Squeak Class Documentation category index | class index  
 
ExternalScreen
  category: Graphics-External
  superclass: DisplayScreen
  subclasses:

I represent a DisplayScreen that is not part of the Squeak universe. Subclasses must implement the appropriate primitives for creating, destroying and allocating the appropriate external objects.

Note: It is assumed that all external display surfaces are accessible by FXBlt, meaning that any support code must register the surfaces with the surface plugin. This requires that the support code will have a way of accessing the bits of the surface. Although this can be terribly expensive (such as on X where a roundtrip to the server might be required or for an OpenGL display where glReadPixels usually is slow as hell) the appropriate methods should be implemented. This allows for a gradual transition to less expensive model (such as implementing an X11Canvas supporting the drawing primitives of X) and is therefore the preferred solution.

In the eventual case that it's known that BitBlt/FXBlt will *never* be used in conjunction with a particular drawing surface, the support code should return a handle that is a) not a SmallInteger (these are used by the surface plugin) and b) not of the 'bitsSize' of a Form. One possible representation for such a handle would be a ByteArray of a non-integral word size (e.g., a ByteArray of size 5,6, or 7). In this case, all attempts to use FXBlt with the drawing surface will simply fail.

instance methods
  accessing
  colormapFromARGB
defaultBitBltClass
defaultWarpBltClass
rgbaBitMasks

  blitting support
  copyBits:from:at:clippingBox:rule:fillColor:map:
displayOn:at:clippingBox:rule:fillColor:
fill:rule:fillColor:
isBltAccelerated:for:
isFillAccelerated:for:

  form support
  allocateForm:
destroyForm:
rgbaBitMasksOfForm:

  initialize-release
  destroy
finish
flush
release
shutDown

  primitives-display
  primBltFast:from:at:from:extent:
primBltFast:to:at:from:extent:
primCreateDisplaySurface:width:height:
primDestroyDisplaySurface:
primDisplay:colorMasksInto:
primFill:color:x:y:w:h:
primFinish:
primFlush:
supportsDisplayDepth:

  primitives-forms
  primAllocateForm:width:height:
primDestroyForm:
primForm:colorMasksInto:

  primitives-textures
 

  private
  setExtent:depth:

  testing
  hasNonStandardPalette
isExternalForm

  texture support
 

class methods
  no messages
 

instance methods
  accessing top  
 

colormapFromARGB

Return a ColorMap mapping from canonical ARGB pixel values into the receiver


 

defaultBitBltClass

Return the BitBlt version to use when I am active


 

defaultWarpBltClass

Return the WarpBlt version to use when I am active


 

rgbaBitMasks

Return the masks for specifying the R,G,B, and A components in the receiver


  blitting support top  
 

copyBits:from:at:clippingBox:rule:fillColor:map:

Attempt to accelerate blts to the receiver


 

displayOn:at:clippingBox:rule:fillColor:

Attempt to accelerate blts to aDisplayMedium


 

fill:rule:fillColor:

Replace a rectangular area of the receiver with the pattern described by aForm
according to the rule anInteger.


 

isBltAccelerated:for:

Return true if the receiver can perform accelerated blt operations by itself.
It is assumed that blts of forms allocated on the receiverusing Form>>over
may be accelerated.
Although some hardware may allow source-key blts (that is, Form>>paint or similar)
this is usually questionable and the additional effort for allocating and
maintaining the OS form doesn't quite seem worth the effort.


 

isFillAccelerated:for:

Return true if the receiver can perform accelerated fill operations by itself.
It is assumed that the hardware can accelerate plain color fill operations.


  form support top  
 

allocateForm:

Allocate a new form which is similar to the receiver and can be used for accelerated blts


 

destroyForm:

Destroy the given external form


 

rgbaBitMasksOfForm:


  initialize-release top  
 

destroy

Destroy the receiver


 

finish

Flush the receiver


 

flush

Flush the receiver


 

release

I am no longer Display. Release any resources if necessary


 

shutDown

Minimize Display memory saved in image


  primitives-display top  
 

primBltFast:from:at:from:extent:

Primitive. Perform a fast blt operation. Return the receiver if successful.


 

primBltFast:to:at:from:extent:

Primitive. Perform a fast blt operation. Return the receiver if successful.


 

primCreateDisplaySurface:width:height:

Primitive. Create a new external display surface. Return the handle used to identify the receiver. Fail if the surface cannot be created.


 

primDestroyDisplaySurface:

Primitive. Destroy the display surface associated with the given handle.


 

primDisplay:colorMasksInto:

Primitive. Store the bit masks for each color into the given array.


 

primFill:color:x:y:w:h:

Primitive. Perform an accelerated fill operation on the receiver.


 

primFinish:

Primitive. Finish all rendering operations on the receiver.
Do not return before all rendering operations have taken effect.


 

primFlush:

Primitive. If any rendering operations are pending, force them to be executed.
Do not wait until they have taken effect.


 

supportsDisplayDepth:

Return true if this pixel depth is supported on the current host platform.


  primitives-forms top  
 

primAllocateForm:width:height:

Primitive. Allocate a form with the given parameters


 

primDestroyForm:

Primitive. Destroy the form associated with the given handle.


 

primForm:colorMasksInto:

Primitive. Store the bit masks for each color into the given array.


  primitives-textures top  

  private top  
 

setExtent:depth:

Create a 3D accelerated display screen


  testing top  
 

hasNonStandardPalette

Quite possible.


 

isExternalForm

Sorta. Kinda.


  texture support top  

class methods
  no messages top