Commit Graph

35 Commits

Author SHA1 Message Date
G.K.MacGregor
6185ca7110 Make full screen+row colours and CLUT remapping undoable 2023-08-13 21:47:22 +01:00
G.K.MacGregor
021fbfa60f Rewrite the decoder
A complete rewrite of decode.cpp and decode.h to make it easier to follow
and maintain. Rather than a set of "layers" descended from C++ classes, the
for-loop across the rows and columns explicitly lays out the order of
processing the Level 1 characters and attributes, the X/26 enhancements
that affect the page directly as well as those within each Invocation of an
Object, followed by selecting which Invoked Object to place in the character
cell or in the absence of an Object the underlying page fragment will be
placed in the cell.

The new decoder has the following improvements over the old...
- Local Enhancement Data has priority over Active Objects.
- Active Objects can set Full Screen and Full Row colours.
- Incremental/decremental flash phases are tracked correctly within Objects.
- X/26 characters overwriting the bottom half of Level 1 Double Height rows.
- Interaction between the underlying page and Objects where characters of
  different sizes overlap.
2023-05-07 19:25:06 +01:00
G.K.MacGregor
9bd9f180c2 Don't hide control codes or grid when exporting PNG 2023-02-02 18:18:51 +00:00
G.K.MacGregor
c64be6a4c9 Update copyright notices to 2023 2022-12-31 21:19:15 +00:00
G.K.MacGregor
213eace512 Add dither to mosaic manipulating keypresses 2022-11-06 18:42:14 +00:00
G.K.MacGregor
abf649d2ab Add reload from disk
This is typically mapped to the F5 key, so the "secret force refresh"
key has been temporarily moved to F6.
2022-07-17 15:16:53 +01:00
G.K.MacGregor
a8f2152c92 Try fixing the "unknown keypress types a block character" 2022-06-20 18:30:53 +01:00
G.K.MacGregor
bcc0d0d8e7 Keep keyboard focus if scene item other than proxy widget is clicked 2022-05-15 13:08:58 +01:00
G.K.MacGregor
e16bb15310 Split decoder and render
decode.* will solely decode the teletext packets into a grid of characters and
colours and other attributes stored in an agnostic way, then render.* will read
this grid and render the characters onto the screen with the Qt specific
methods.
2022-04-02 22:38:38 +01:00
G.K.MacGregor
406ab6c6ed Update copyright notices to 2022 2021-12-31 21:40:36 +00:00
G.K.MacGregor
c8e57150eb Implement exporting PNG images 2021-06-03 22:26:54 +01:00
G.K.MacGregor
2c04c898ab Handle non-Latin characters when pasting plain text 2021-05-23 14:03:28 +01:00
G.K.MacGregor
a66474b7cf Handle plain text in clipboard
This does not word-wrap single lines of text at all, it assumes the
plain text is in a neat block with newlines at the end of each line.

We can't yet handle non-ASCII Unicode characters as that will need
further work on the keymapping tables.
2021-05-18 22:03:08 +01:00
G.K.MacGregor
19f74a1761 Focus main text widget on startup 2021-05-09 18:55:20 +01:00
G.K.MacGregor
56e7b0500c Implement zooming with Control key and mousewheel 2021-05-04 21:52:51 +01:00
G.K.MacGregor
9fa86f8c4c Implement cut, copy and paste 2021-05-03 22:17:51 +01:00
G.K.MacGregor
7a0dbcca2b Compact allocating and pushing of commands 2021-05-02 12:36:37 +01:00
G.K.MacGregor
4387e9ffbd Overhaul draggable selection rectangle logic
The cursor always forms one corner of the selection area.
The area can also be selected with the keyboard using Shift and the
arrow keys.
2021-04-27 22:07:54 +01:00
G.K.MacGregor
5739474957 Move selection rectangle from widget to scene 2021-04-26 22:08:28 +01:00
G.K.MacGregor
8bc0c2c886 Move cursor from widget to scene 2021-04-26 21:06:00 +01:00
G.K.MacGregor
dc93fe856d Move grid from widget to scene 2021-04-18 16:57:45 +01:00
G.K.MacGregor
f49a07e421 Make Insert key work again in triplet list 2021-04-11 13:03:07 +01:00
G.K.MacGregor
0abc96af5d Filter Ctrl keypresses in main widget 2021-02-16 18:19:29 +00:00
G.K.MacGregor
4ce8f56e28 Fix non-refresh when grid was toggled 2021-02-16 17:31:45 +00:00
G.K.MacGregor
27ad6701b4 Implement insert and overwrite editing modes 2021-02-14 17:35:11 +00:00
G.K.MacGregor
9a997d1bfa Implement Delete key command 2021-02-12 21:33:06 +00:00
G.K.MacGregor
572c23b1ae Implement keymapping. 2021-02-08 21:39:17 +00:00
G.K.MacGregor
d38bfcf902 Update copyright notices to 2021 2020-12-31 22:08:52 +00:00
G.K.MacGregor
cf00cff59d Move proxy widget from mainwindow to mainwidget
Mainly in preparation for editing different document types.
Also fixes some issues wrt border sizing.
2020-11-24 13:16:20 +00:00
G.K.MacGregor
79fac8b972 Split out commands into their own file 2020-11-10 18:48:12 +00:00
G.K.MacGregor
151d842bc0 Implement draggable rectangle selection 2020-10-25 11:07:04 +00:00
G.K.MacGregor
0f864c7787 Rename TeletextPage class to LevelOnePage 2020-09-16 11:15:46 +01:00
G.K.MacGregor
fcc9280391 Begin refactoring of page class 2020-09-11 12:06:06 +01:00
G.K.MacGregor
fca19094a9 Fix Z and X keys toggling the wrong mosaic bits. 2020-09-06 17:42:58 +01:00
G.K.MacGregor
c24505796a Initial commit. 2020-09-06 16:47:38 +01:00