Commit Graph

221 Commits

Author SHA1 Message Date
G.K.MacGregor
e3a8f43b52 Split text block saving into intermediate class 2024-02-02 18:00:43 +00:00
G.K.MacGregor
baa20d69b7 Really simplify refresh signalling
Amendment to a468032, where refresh signal was not taken out of row loops.
2024-02-02 16:34:34 +00:00
G.K.MacGregor
bd49ba9e47 Update copyright notices to 2024 2024-01-01 00:12:17 +00:00
G.K.MacGregor
16f6d353ed Revert "Make cycle time optional"
This reverts commit 3048e4dbc6.
Without a CT line vbit2 defaults to 1 cycle which could be too fast on
magazines with very few pages.
2023-11-30 22:05:14 +00:00
G.K.MacGregor
42d19b6e4b Properly set 2nd region combobox to unneeded 2023-11-29 22:10:58 +00:00
G.K.MacGregor
9759321566 Update URL of the ETS 300 706 teletext specification 2023-10-21 19:16:54 +01:00
G.K.MacGregor
426052f573 Port away from GNU case range extension
Hopefully this should now compile with MSVC and other compilers
2023-09-12 16:45:55 +01:00
G.K.MacGregor
3048e4dbc6 Make cycle time optional 2023-09-12 14:58:22 +01:00
G.K.MacGregor
a4680326f0 Simplify refresh signalling 2023-09-12 13:50:00 +01:00
G.K.MacGregor
a28e56797b Fix missing bottom half of double size text in passive objects 2023-09-05 20:25:08 +01:00
G.K.MacGregor
e56fc40f8f Put parameter names into header files too 2023-08-27 14:25:16 +01:00
G.K.MacGregor
24cafa00d4 Force reload shortcut to F5 key
GNOME/GTK environments could map the reload shortcut to Ctrl+R which clashes
with the Reveal shortcut.
2023-08-22 21:42:36 +01:00
G.K.MacGregor
8e14d144fd [Qt6] Fix shortcut key sequences 2023-08-22 21:34:10 +01:00
G.K.MacGregor
e001aa7896 [Qt6] Use setEncoding instead of deprecated setCodec 2023-08-20 22:16:51 +01:00
G.K.MacGregor
22703e4bfb [Qt6] Switch QRegExp usage to QRegularExpression 2023-08-20 19:39:13 +01:00
G.K.MacGregor
6d79329442 [Qt6] Include QActionGroup 2023-08-20 19:09:24 +01:00
G.K.MacGregor
fe69e0cd0f [Qt6] Be explicit about QChar() 2023-08-20 19:01:53 +01:00
G.K.MacGregor
fe53cabee1 [Qt6] Switch to Qt::SkipEmptyParts to fix deprecation warning 2023-08-20 18:50:55 +01:00
G.K.MacGregor
86e2856d50 Tag version 0.6.2-alpha 0.6.2-alpha 2023-08-15 19:50:56 +01:00
G.K.MacGregor
116b02d68f Refresh page when C5 or C6 bits are toggled 2023-08-15 18:41:26 +01:00
G.K.MacGregor
c9a0d0bf84 Change default page timing from 8 to 20 seconds 2023-08-15 18:36:33 +01:00
G.K.MacGregor
f36143e10f Really show correct G0 and G2 character set in widgets
Amendment to 7b59c78. This should prevent spurious NOS character sets from
appearing in the widgets, and should also prevent the G0 and G2 character
sets from getting mixed up in the widgets when those triplets are within
object definitions.

The G0 and G2 character set in the widgets may still be incorrect in corner
cases of objects invoked within areas of the page where the character set
has been changed either with the ESC/Switch spacing attribute or with the
"modified G0/G2 character set designation" triplet.
2023-08-15 18:11:40 +01:00
G.K.MacGregor
6185ca7110 Make full screen+row colours and CLUT remapping undoable 2023-08-13 21:47:22 +01:00
G.K.MacGregor
3729b293f0 Fix pasting 0x7f on unmapped plain text character 2023-08-13 14:38:56 +01:00
G.K.MacGregor
b71c178840 Fix crash if Termination or Define Object was only triplet 2023-08-09 22:20:20 +01:00
G.K.MacGregor
ba2d1241d0 Fix flashing rows with mixed 1Hz and 2Hz rates 2023-08-06 16:49:44 +01:00
G.K.MacGregor
07e0d757bb Forgot to remove "no mod'd G0 and G2 designation" from README 2023-06-24 23:55:55 +01:00
G.K.MacGregor
88ea066481 Tag version 0.6.1-alpha 0.6.1-alpha 2023-06-24 18:05:05 +01:00
G.K.MacGregor
7b59c78cee Show correct G0 and G2 character set from page in widgets 2023-06-23 18:39:36 +01:00
G.K.MacGregor
c8f61d4d2c Fix default palette detection of CLUTs 1:7 and 3:7 2023-06-20 18:42:01 +01:00
G.K.MacGregor
bd894a523e Show language names with mod'd G0/G2 character set triplet 2023-06-15 18:55:47 +01:00
G.K.MacGregor
27ae092b5e Lock out CLUT 0-1 editing when Level is not 3.5 2023-06-14 18:21:23 +01:00
G.K.MacGregor
43dcccb00c Fix to reserved value in mode menu 2023-06-12 21:54:59 +01:00
G.K.MacGregor
0d0db2f8b6 Implement modified G0 and G2 character set designation triplet 2023-06-12 16:37:50 +01:00
G.K.MacGregor
61c52fe7cc Fix resetting reserved bit for display attributes 2023-05-21 18:32:25 +01:00
G.K.MacGregor
4b6ea4398d Implement Level 3.5 bold and italic font style
Proportional font attributes are tracked within the decoder, but the effect
is not rendered.
2023-05-21 15:33:21 +01:00
G.K.MacGregor
ed821bde45 Use proper composition mode when copying lines to flash buffers 2023-05-14 17:39:08 +01:00
G.K.MacGregor
955a1262e9 Clear invocation QMaps on empty triplet list
Fixes a bug where local enhancements hung around when switching to a subpage
without enhancements.
2023-05-09 23:35:29 +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
801efa570c Also track Active Position of Level 1.5 decoding
This is needed for the upcoming decoder write as decode.cpp will track the
Active Position from the internal data of x26triplets.

If decode.cpp is rewritten again to track the Active Position independently
of x26triplets this commit may be reverted, but then again tracking how the
Active Position moves on both levels 1.5 and 2.5+ may be useful in terms of
warning the user of differing results on different decoder levels.
2023-05-02 18:56:06 +01:00
G.K.MacGregor
0b50b064db Set address when inserting a Address Row 0 triplet 2023-04-12 21:18:22 +01:00
G.K.MacGregor
c5e3fd5668 Optimise rendering of pages with flashing characters
Previously every character on the page was drawn up to six times. Now the
page is drawn once, quickly copied up to five times and then only the
flashing characters are redrawn on the copies.
2023-03-19 17:38:52 +00:00
G.K.MacGregor
3125762133 Tag version 0.6-alpha 0.6-alpha 2023-03-05 14:38:45 +00:00
G.K.MacGregor
c0670c8281 Never mark a document cleanly saved after .t42 export
Amendment to 7493c8f so that a document even with only one subpage will not
be marked as cleanly saved. This should reinforce the fact that only TTI
files will be guaranteed to store everything.
2023-02-26 18:06:14 +00:00
G.K.MacGregor
7493c8f527 Add re-export option if .t42 file is loaded or exported
This allows a single keypress or menu click to repeatedly export a subpage
over the same .t42 file, like "Save" does for TTI files. If further teletext
page formats are added in the future this option should remember which
format was exported.

This option is deliberately different from "Save" as .t42 files are only
exported as the current subpage on view, and some metadata stored in TTI
files but not in .t42 files could be lost.

When exporting .t42 files the document is only marked as cleanly saved if it
consisted of a single subpage. Documents of more than one subpage will still
cause a confirmation dialog to be shown if unsaved, as the other subpages
will be lost unless the document is saved again as TTI.
2023-02-26 17:29:09 +00: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
eb752835fd Auto-set row when inserting a Set Active Position triplet 2022-12-13 21:34:14 +00:00
G.K.MacGregor
72a2ef9660 Implement word wrapping when pasting plain text, wrt #6
When the clipboard has plain text data copied from a plain text or ASCII
text editor, pasting the text will perform word wrapping.

The text will originate from the cursor position and subsequent lines will
by default start from column 1 to provide room for alphanumeric colour
control codes in column 0.

If the cursor is at column 0 then all lines will start at column 0.

If a box selection is dragged before pasting the text will originate at
the top left of the selection box and be confined to the box. This can be
used if the second and subsequent lines need to start at a different
column, or if the pasted text must not overwrite an existing feature at
the right side of the page.

Note that cutting or copying text from within QTeletextMaker itself will
not be word wrapped on paste.
2022-11-20 17:36:53 +00:00
G.K.MacGregor
213eace512 Add dither to mosaic manipulating keypresses 2022-11-06 18:42:14 +00:00