1 \ *****************************************************************************
2 \ * Copyright (c) 2015 IBM Corporation
3 \ * All rights reserved.
4 \ * This program and the accompanying materials
5 \ * are made available under the terms of the BSD License
6 \ * which accompanies this distribution, and is available at
7 \ * http://www.opensource.org/licenses/bsd-license.php
10 \ * IBM Corporation - initial implementation
11 \ ****************************************************************************/
13 \ Provide some of the functions that are defined in the
14 \ "OF Recommended Practice: 8bit Graphics Extension" document
16 : draw-rectangle ( adr x y w h -- )
17 frame-buffer-adr 0= IF 4drop drop EXIT THEN
19 4dup drop ( adr x y w adr x y )
20 \ calculate offset into framebuffer: ((y + i) * width + x) * depth
21 i + screen-width * + screen-depth * ( adr x y w adr offs )
22 frame-buffer-adr + ( adr x y w adr fb_adr )
23 over 3 pick screen-depth * i * + ( adr x y w adr fb_adr src )
24 swap 3 pick screen-depth * ( adr x y w adr src fb_adr len )
25 rmove \ copy line ( adr x y w adr )
31 : fill-rectangle ( col x y w h -- )
32 frame-buffer-adr 0= IF 4drop drop EXIT THEN
34 4dup drop ( col x y w col x y )
35 \ calculate offset into framebuffer: ((y + i) * width + x) * depth
36 i + screen-width * + screen-depth * ( col x y w col offs )
37 frame-buffer-adr + ( col x y w col adr )
38 2 pick screen-depth * 2 pick ( col x y w col adr len col )
39 rfill \ draw line ( col x y w col )
45 : read-rectangle ( adr x y w h -- )
46 frame-buffer-adr 0= IF 4drop drop EXIT THEN
48 4dup drop ( adr x y w adr x y )
49 \ calculate offset into framebuffer: ((y + i) * width + x) * depth
50 i + screen-width * + screen-depth * ( adr x y w adr offs )
51 frame-buffer-adr + ( adr x y w adr fb_adr )
52 over 3 pick screen-depth * i * + ( adr x y w adr fb_adr dst )
53 3 pick ( adr x y w adr fb_adr dst w )
54 rmove \ copy line ( adr x y w adr )
60 : dimensions ( -- width height )
61 screen-width screen-height
64 \ Initialize a default palette (not a standard command, but useful anyway)
65 : init-default-palette
66 \ Grayscale ramp for upper colors
70 \ Standard colors from "16-color Text Extension" specification