Commit graph

152 commits

Author SHA1 Message Date
Bill Currie
01835cbd94 [qwaq] Add blitFromBuffer to TextContext protocol 2020-03-19 13:48:48 +09:00
Bill Currie
2f3ca9d9e4 [qwaq] Clean up the hierarchy
I think I've finally figured out what I want the core hierarchy to be.
Right now, it's just the two classes: View and Window (derived from
View). Window has a Group, and Group is just a collection of Views that
it manages. QwaqApplication is just an object but like a Window, it has
a Group of views.

    View
      Window has a Group
    Group contains Views
    QwaqApplication has a group

More work needs to be done on drawing and event handling, but things are
working again.
2020-03-19 11:32:44 +09:00
Bill Currie
b16093a533 [qwaq] Split out Array(Group) interface 2020-03-19 11:04:02 +09:00
Bill Currie
f6f6b2cba3 [qwaq] Doc the issue number for blit slug 2020-03-18 01:40:58 +09:00
Bill Currie
affadc3d25 [qwaq] Create protocols for DrawBuffer and TextContext
Plenty of flaws at the moment (casts to id :/), but the basic idea seems
to be ok.
2020-03-18 01:40:41 +09:00
Bill Currie
e5bc6dd8b6 [qwaq] Split Array(Group) into its own file 2020-03-18 01:12:23 +09:00
Bill Currie
28a8c1fda7 [qwaq] Implement more curses wrappers 2020-03-17 14:05:31 +09:00
Bill Currie
877ad35a82 [qwaq] Rework the hierarchy again
It doesn't work right now because View unconditionally sends refresh to
its textContext, but textContext can be a draw buffer which does not
respond to refresh. Still, these changes (notably the assignment chain
in qwaq-group.r really pushed qfcc).
2020-03-14 19:45:07 +09:00
Bill Currie
6001abbfdb [qwaq] Use the now working compound init more 2020-03-13 10:00:05 +09:00
Bill Currie
45acbddb79 [qwaq] Make DrawBuffer and TextContext sizes available 2020-03-13 03:09:42 +09:00
Bill Currie
1d3c8d8a6c [qwaq] Sort out mess around placement of getwrect 2020-03-13 03:09:42 +09:00
Bill Currie
d0f21ec2b4 [qwaq] Add -refresh to TextContext
This does the right thing in the presence of panels and dealing with
stdscr.
2020-03-13 03:09:42 +09:00
Bill Currie
3defe50be6 [qwaq] Add printf builtin to ease debugging 2020-03-13 02:41:08 +09:00
Bill Currie
7f9a415cbc [qwaq] Get DrawBuffer and TextContext working
Especially blitting whole regions. Partial regions not tested yet.
2020-03-13 02:36:53 +09:00
Bill Currie
ce67d9b202 [qwaq] Flesh out DrawBuffer's methods 2020-03-10 19:27:26 +09:00
Bill Currie
b3850bbc69 [qwaq] Implement blitting from draw buffer to text
Sending the data out to curses.
2020-03-10 19:23:51 +09:00
Bill Currie
f91fb4f840 [qwaq] Add an mvwblit_line builtin
I had to do my own thing with curses as the function I had planned to
use turned out to be quite different from what I wanted (misread the man
page).
2020-03-10 18:21:06 +09:00
Bill Currie
fb92ee12d6 [qwaq] Set event type to none when no events
Fixes the endless looping on the last event.
2020-03-10 03:11:21 +09:00
Bill Currie
f9d798c314 [qwaq] Use forwarding for some text methods
refresh won't be in the drawing buffer protocol, and the move commands
need to be offset by the view's position in its window, but it works as
intended.
2020-03-10 02:58:30 +09:00
Bill Currie
e9eab68366 [qwaq] Begin work on local drawing buffers 2020-03-10 02:39:18 +09:00
Bill Currie
0780cca496 [qwaq] Fixed swapped method implementations
That was fun
2020-03-08 22:21:15 +09:00
Bill Currie
8fc007648c [qwaq] Add missed command enum string 2020-03-08 22:20:46 +09:00
Bill Currie
89cf9f9523 [qwaq] Use Sys_Printf for load error messages
It gets them into the log file.
2020-03-08 22:19:37 +09:00
Bill Currie
f0ecf7b30a [qwaq] Clean out log file with make clean 2020-03-06 20:43:38 +09:00
Bill Currie
1250fe7446 [qwaq] Use a log file instead of stderr
Now I don't have to worry about remembering to redirect the output, but
debugging is still easy.
2020-03-06 18:29:16 +09:00
Bill Currie
b8b74fc074 [qwaq] Implement missing addch
I either forgot about it, or just didn't need it at the time, but I'm
sure it will be useful later when more stuff is implemented.
2020-03-06 17:57:33 +09:00
Bill Currie
9a96a9b2c9 [qwaq] Use own version of positional drawing in Window
Double offsetting the prints doesn't quite look right ;)
2020-03-06 17:46:36 +09:00
Bill Currie
d0a249590c [qwaq] Use self where possible for drawing in Window 2020-03-06 17:45:58 +09:00
Bill Currie
bea64838cc [qwaq] Use new TextContext
Not quite right yet, but it worked first try (once I got another
compiler bug sorted).
2020-03-06 17:38:27 +09:00
Bill Currie
ba9c43d2d3 [qwaq] Create a TextContext class
It is essentially just a wrapper around the window versions of ncurses
functions.
2020-03-06 13:54:46 +09:00
Bill Currie
40ae7a7f19 [qwaq] Implement ofDontDraw
The conditional selector performance seems to work nicely, but I've
found a mistake with View.window (partly, realizing why my old lib (and
probably TV in the first place) had separate textContext and buffers
between views and groups).
2020-03-06 11:53:40 +09:00
Bill Currie
6bf2fd546d [qwaq] Extend Array makeObjectsPerform methods
Added conditional message sending and reversed traversal of the array.
2020-03-06 11:27:31 +09:00
Bill Currie
ad4cde15b5 [qwaq] Get Window working
It even draws a border around itself.
2020-03-06 00:32:09 +09:00
Bill Currie
f18e3c3ad7 [qwaq] Add wborder command 2020-03-06 00:31:29 +09:00
Bill Currie
971caf553d [qwaq] Add debug output to the command queue
Be sure to redirect stderr or the screen will get messed up
2020-03-06 00:30:11 +09:00
Bill Currie
c377b324a1 [qwaq] Add Group and clean up lots of mess
Things are finally doing something again, and getting closer to having a
moveable window.
2020-03-05 15:44:53 +09:00
Bill Currie
f3236410d0 [qwaq] Make the event system more informative
Doesn't have timestamps at this stage, but otherwise it reflects the
event system I had in my old text UI which was heavily based on
TurboVision. TV is pretty good (after looking at things a bit closer I
found it wasn't as deep as I thought), and better yet, Borland released
it to the public domain 23 years ago! (wish I'd known that).

Anyway, this commit gets something happening on the screen, even though
the current hierarchy is still a mess.
2020-03-04 22:09:40 +09:00
Bill Currie
815ae02121 [qwaq] Allocate enough bytes for the args list
d'oh
2020-03-04 21:17:17 +09:00
Bill Currie
d57e05258c [qwaq] Remove now unnecessary union field name
\o/
2020-03-04 19:10:09 +09:00
Bill Currie
c58cf2c2d0 [qwaq] Fail at object oriented design 101
This is horrible, doesn't work, isn't really the direction I want to go
(that became apparent while implementing Screen's handleEvent) and
crashes anyway (Array and not-id...)

*sigh*

Still, this does have some good stuff in it, and it pushed qfcc along
some more.
2020-03-03 21:32:19 +09:00
Bill Currie
bb25057feb [qwaq] Quickly Workaround Access Qualifications
:)
2020-03-03 10:47:34 +09:00
Bill Currie
50d39d64cb [qwaq] Link against build ruamoko libs, not installed 2020-03-03 09:30:20 +09:00
Bill Currie
d91289ea1b [qwaq] Remove unnecessary wrefresh calls 2020-03-02 18:43:27 +09:00
Bill Currie
33a07c0f6b [qwaq] Make command buffer larger for now
A small one should be fine once threading is working.
2020-03-02 18:30:58 +09:00
Bill Currie
6f1386fa0d [qwaq] Test out acs chars and the classes
Crashes due to flooding the command buffer, but otherwise works (with
larger buffer).
2020-03-02 18:29:31 +09:00
Bill Currie
b9ab30ff59 [qwaq] Add mvwaddch and ACS support 2020-03-02 18:27:08 +09:00
Bill Currie
a0c4d56668 [qwaq] Continue processing on void commands
If the last command in the buffer had no parameters, its length would be
only 2 and thus processing would stop before reading the command from
the buffer.
2020-03-02 18:19:41 +09:00
Bill Currie
fa66e9fc2f [qwaq] Move queue handling into separate functions
This makes it so I need to edit only one place when I get threads
working. Also, it fixes some bugs (eg, panel creation wasn't implemented
correctly).
2020-03-02 18:15:31 +09:00
Bill Currie
d88a091fc6 [qwaq] Use protocols to distinguish object abilities
Well, that took a fair bit more than it should have to get working: had
to implement the protocol support in qfcc and engine-side ruamoko.
2020-03-02 15:22:54 +09:00
Bill Currie
92cb3a5285 [qwaq] Flatten the hierarchy and do some cleanup 2020-03-01 18:25:02 +09:00
Bill Currie
4d076da4b6 [qwaq] Fix warning hidden by type alias bug 2020-03-01 16:15:33 +09:00
Bill Currie
df2ed4b086 [qwaq] Move from tools to ruamoko
This fixes the dependency issues between qwaq and ruamoko. qwaq is
actually older than ruamoko. That little language feature test has come
a long way.

However, I'm considering moving to non-recursive make, but...
2020-03-01 00:55:15 +09:00