Difference between revisions of "PixelDisplay"
(Added note about tile size) |
|||
Line 49: | Line 49: | ||
| [[PixelDisplay.print]] ''str'', ''x'', ''y'', ''[color]'', ''[font]'' || draw a string | | [[PixelDisplay.print]] ''str'', ''x'', ''y'', ''[color]'', ''[font]'' || draw a string | ||
|} | |} | ||
+ | |||
+ | == Implementation Note == | ||
+ | |||
+ | For performance reasons, a PixelDisplay under the hood is made up of 256x256 pixel tiles. These are initialized to the color passed to [[PixelDisplay.clear]]. As a result, if your width or height is not an even multiple of 256, then this initial clear color will extend beyond the usable area. As an example, try: | ||
+ | |||
+ | <ms>gfx.clear color.red, 200,200 | ||
+ | gfx.fillRect 0,0,gfx.width,gfx.height, color.blue</ms> | ||
+ | |||
+ | This displays a 200x200 blue square (the official size of the pixel display) with an additional red area extending 256x256 (one full tile) in size. | ||
[[Category:Mini Micro]] | [[Category:Mini Micro]] |
Latest revision as of 20:09, 7 April 2022
The PixelDisplay
class in Mini Micro is a display type that represents a rectangular pixel buffer, with methods to efficiently draw lines, shapes, images, and text.
By default, display 5 is configured as a pixel display, and is in fact the pixel display to which the gfx global refers (unless you change it). But you can make any display layer a pixel display by setting its mode to displayMode.pixel
.
A PixelDisplay is 960 x 640 pixels by default (see screen coordinates), though this may be changed via the clear method.
Methods and Properties
Method or Property | Purpose |
---|---|
PixelDisplay.color | get or set the default drawing color, used when color is not otherwise specified |
PixelDisplay.width | number of columns in the the pixel buffer |
PixelDisplay.height | number of rows in the the pixel buffer |
PixelDisplay.scale | scaling factor used to magnify (or shrink) the pixel display on screen |
PixelDisplay.clear [color], [width], [height] | clear/reset the pixel buffer |
PixelDisplay.pixel x , y | get the color of a particular pixel |
PixelDisplay.setPixel x, y, [color] | set the color of a particular pixel |
PixelDisplay.scrollX | get or set a horizontal shift applied to the entire display |
PixelDisplay.scrollY | get or set a vertical shift applied to the entire display |
PixelDisplay.line x1, y1, x2, y2, [color], [penSize] | draw a line |
PixelDisplay.drawRect left, bottom, width, height, [color], [penSize] | draw a rectangle outline |
PixelDisplay.fillRect left, bottom, width, height, [color] | draw a filled rectangle |
PixelDisplay.drawEllipse left, bottom, width, height, [color], [penSize] | draw an ellipse outline |
PixelDisplay.fillEllipse left, bottom, width, height, [color] | draw a filled ellipse |
PixelDisplay.drawPoly points, [color], [penSize] | draw a polygon outline |
PixelDisplay.fillPoly points, [color] | draw a filled polygon |
PixelDisplay.drawImage img, left, bottom, [width], [height], [srcLeft], [srcBottom], [srcWidth], [srcHeight] | draw an Image (or portion thereof) |
PixelDisplay.getImage(left, bottom, width, height) | get a portion of the pixel buffer as an Image |
PixelDisplay.print str, x, y, [color], [font] | draw a string |
Implementation Note
For performance reasons, a PixelDisplay under the hood is made up of 256x256 pixel tiles. These are initialized to the color passed to PixelDisplay.clear. As a result, if your width or height is not an even multiple of 256, then this initial clear color will extend beyond the usable area. As an example, try:
gfx.clear color.red, 200,200
gfx.fillRect 0,0,gfx.width,gfx.height, color.blue
This displays a 200x200 blue square (the official size of the pixel display) with an additional red area extending 256x256 (one full tile) in size.