mirror of
https://github.com/blondie7575/WeeGUI.git
synced 2024-12-14 06:31:06 +00:00
Added support for frameless views
This commit is contained in:
parent
aa7425b99a
commit
19657cb959
@ -282,10 +282,10 @@ Many API calls rely on the concept of a "selected" view. One view at a time can
|
|||||||
View Styles
|
View Styles
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Views in WeeGUI can be drawn with two different types of frame: Plain and Fancy. Examples of each are shown below.
|
Views in WeeGUI can be drawn frameless, or with two different kinds of frame (as shown below).
|
||||||
|
|
||||||
|
|
||||||
**IMPORTANT:** The visual border around a view (a one-character-thick outline) is drawn *outside* the bounds of the view. This means *you need to allow room around your views*. Don't attempt to place a view in columns 0 or 79, or in rows 0 or 23. *In order to maximize rendering speed, WeeGUI takes only minimal precautions to prevent rendering outside the visible screen area.* Rendering outside the screen area will almost certainly cause crashes and other Very Bad Things™ on your Apple II.
|
**IMPORTANT:** The visual frame around a view is drawn *outside* the bounds of the view. This means *you need to allow room around your views*. Don't attempt to place a view in columns 0 or 79, or in rows 0 or 23. *In order to maximize rendering speed, WeeGUI takes only minimal precautions to prevent rendering outside the visible screen area.* Rendering outside the screen area will almost certainly cause crashes and other Very Bad Things™ on your Apple II. The exception to this is frameless views (style 0). These can be used right up to the edges of the screen.
|
||||||
|
|
||||||
Because view frames are rendered with Mousetext characters, views have limits on how close they can be placed together, and overlapping views may not always look perfect. WeeGUI views are drawn with a modern display-list rendering strategy, which means it combines information about all views to make the result look as good as possible within the constraints of the Apple II character set. For example, you *can* have Plain views that are separated by only one row, because there is a "double-horizontal-line" character in Mousetext that WeeGUI can use to render horizontal borders close together. However, no such character exists for verticals, thus adjacent views must be separated by at least two columns. You'll need to experiment a bit to get a sense of what will render well and what won't.
|
Because view frames are rendered with Mousetext characters, views have limits on how close they can be placed together, and overlapping views may not always look perfect. WeeGUI views are drawn with a modern display-list rendering strategy, which means it combines information about all views to make the result look as good as possible within the constraints of the Apple II character set. For example, you *can* have Plain views that are separated by only one row, because there is a "double-horizontal-line" character in Mousetext that WeeGUI can use to render horizontal borders close together. However, no such character exists for verticals, thus adjacent views must be separated by at least two columns. You'll need to experiment a bit to get a sense of what will render well and what won't.
|
||||||
|
|
||||||
@ -340,7 +340,7 @@ PARAM1: Pointer to configuration block (MSB)
|
|||||||
|
|
||||||
Configuration block consists of eight bytes:
|
Configuration block consists of eight bytes:
|
||||||
0: View ID (0-15)
|
0: View ID (0-15)
|
||||||
1: Style (0 for plain, 1 for fancy)
|
1: Style (see View Styles, above)
|
||||||
2: Left edge of view
|
2: Left edge of view
|
||||||
3: Top edge of view
|
3: Top edge of view
|
||||||
4: Visible width of view
|
4: Visible width of view
|
||||||
@ -349,7 +349,7 @@ Configuration block consists of eight bytes:
|
|||||||
7: Height of view's content
|
7: Height of view's content
|
||||||
</pre></td><td><pre>
|
</pre></td><td><pre>
|
||||||
&WINDW( View ID,
|
&WINDW( View ID,
|
||||||
Style (0 for plain, 1 for fancy),
|
Style (see View Styles, above),
|
||||||
Left edge,
|
Left edge,
|
||||||
Top edge,
|
Top edge,
|
||||||
View width,
|
View width,
|
||||||
@ -575,7 +575,7 @@ X: WGEraseView
|
|||||||
|
|
||||||
|
|
||||||
####WGViewSetTitle
|
####WGViewSetTitle
|
||||||
Changes the title of the selected view. Titles are only visible in the "fancy" style of view border. In Applesoft, the view is automatically redrawn to reflect the change. In assembly, you must call WGPaintView manually to see the change.
|
Changes the title of the selected view. Titles are only visible in the "decorated" style of view border. In Applesoft, the view is automatically redrawn to reflect the change. In assembly, you must call WGPaintView manually to see the change.
|
||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><th>Assembly</th><th>Applesoft</th></tr><tr><td><pre>
|
<tr><th>Assembly</th><th>Applesoft</th></tr><tr><td><pre>
|
||||||
@ -859,7 +859,7 @@ Y: Character to fill with (Apple format)
|
|||||||
|
|
||||||
|
|
||||||
####WGFancyRect
|
####WGFancyRect
|
||||||
Draws the outline of decorated GUI-style window, with scrollbars and title bar. Similar to *WGStrokeRect*, the drawing occurs *outside* the rectangle you specify, so do not attempt to draw a fancy rect in row 0, row 23, column 0, or column 79.
|
Draws the outline of a decorated GUI-style window, with scrollbars and title bar. Similar to *WGStrokeRect*, the drawing occurs *outside* the rectangle you specify, so do not attempt to draw a decorated rect in row 0, row 23, column 0, or column 79.
|
||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><th>Assembly</th><th>Applesoft</th></tr><tr><td><pre>
|
<tr><th>Assembly</th><th>Applesoft</th></tr><tr><td><pre>
|
||||||
|
10
memory.s
10
memory.s
@ -13,10 +13,12 @@ CHAR_NORMAL = $ff
|
|||||||
CHAR_INVERSE = $3f
|
CHAR_INVERSE = $3f
|
||||||
CHAR_FLASH = $7f
|
CHAR_FLASH = $7f
|
||||||
|
|
||||||
VIEW_STYLE_PLAIN = $00
|
VIEW_STYLE_STEALTH = $00
|
||||||
VIEW_STYLE_FANCY = $01
|
VIEW_STYLE_PLAIN = $01
|
||||||
VIEW_STYLE_CHECK = $02
|
VIEW_STYLE_FANCY = $02
|
||||||
VIEW_STYLE_BUTTON = $03
|
VIEW_STYLE_CHECK = $03
|
||||||
|
VIEW_STYLE_BUTTON = $04
|
||||||
|
|
||||||
|
|
||||||
VIEW_STYLE_TAKESFOCUS = $02 ; Styles >= this one are selectable
|
VIEW_STYLE_TAKESFOCUS = $02 ; Styles >= this one are selectable
|
||||||
|
|
||||||
|
1
views.s
1
views.s
@ -264,6 +264,7 @@ WGPaintView:
|
|||||||
|
|
||||||
lda WG_VIEWRECORDS+4,y ; Cache style information
|
lda WG_VIEWRECORDS+4,y ; Cache style information
|
||||||
and #$f ; Mask off flag bits
|
and #$f ; Mask off flag bits
|
||||||
|
beq WGPaintView_done ; If it's a stealth view, we're done
|
||||||
pha
|
pha
|
||||||
|
|
||||||
lda WG_VIEWRECORDS+0,y ; Fetch the geometry
|
lda WG_VIEWRECORDS+0,y ; Fetch the geometry
|
||||||
|
BIN
weegui.dsk
BIN
weegui.dsk
Binary file not shown.
Loading…
Reference in New Issue
Block a user