343 Commits

Author SHA1 Message Date
Gavin MacGregor
df7ce90d0f Set new object definitions to Levels 2.5 and 3.5 2026-02-12 20:56:38 +00:00
Gavin MacGregor
838a54d528 Ensure Level 1.5 active position warnings are cleared 2026-02-12 14:14:46 +00:00
Gavin MacGregor
2682554b79 Update copyright notices to 2026 2025-12-31 09:39:04 +00:00
Gavin MacGregor
a7e93f463a Tag version 0.8.2-beta 0.8.2-beta 2025-12-02 11:34:16 +00:00
Gavin MacGregor
fcca93e5a5 Export animated GIFs with dispose background frames
Closes GH-14 where flashing text in Mix mode would not flash to the
transparent background.

The bundled QtGifImage does not expose a way to change the DisposalMode in
giflib and thus it is fixed at 0 or DISPOSAL_UNSPECIFIED. This is a quick and
dirty change to fix it to 2 or DISPOSAL_BACKGROUND for our needs.

A proper fix would be to fork QtGifImage and add a more accessible API call
to choose the DisposalMode value.
2025-12-01 22:09:49 +00:00
Gavin MacGregor
dbbeea9d30 Clear the background when exporting image in Mix mode
An attempt to solve GH-12 where exporting an image as PNG in Mix mode would
have the blue background instead of being transparent.
2025-11-26 16:45:21 +00:00
Gavin MacGregor
53fb6f0aad Implement select all 2025-11-25 19:09:56 +00:00
Gavin MacGregor
eea73592f9 Add additional escape key sequences for AZERTY layouts
Using the Escape key followed by Shift and a number key to insert a
foreground mosaic attribute doesn't work on an AZERTY keyboard layout where
the Shift key is always needed to type a number.

The additional escape keys are on the top row of letters situated below the
equivalent number key as those letters were not previously not used.

Red:     1 or A
Green:   2 or Z
Yellow:  3 or E
Blue:    4 or R
Magenta: 5 or T
Cyan:    6 or Y
White:   7 or U
Black:   0 or P
2025-11-23 22:01:54 +00:00
Gavin MacGregor
f708765d7b Set FLOF links just once when loading a TTI 2025-11-09 13:43:59 +00:00
Gavin MacGregor
7ce848b4cf Initialise DCLUT with QByteArrayLiteral 2025-11-09 13:17:04 +00:00
Gavin MacGregor
e6a90c061e Extend packet coding function to take packet numbers 2025-11-04 21:59:30 +00:00
Gavin MacGregor
973aeaa6cf Drop unknown page function and packet coding 2025-11-04 19:56:00 +00:00
Gavin MacGregor
1efa8c196d Handle invalid triplets
"Invalid triplets" are triplets that have failed Hamming 24/18 decoding.

Previously, invalid triplets were converted at load time to either all zero
bits or, in the case of X/26 enhancement triplets, to "dummy" triplets of
reserved mode 11110 with a row address group that hopefully have no effect.
Now the X/26 enhancement triplet list can explicitly store invalid triplets
and will show them as "error decoding triplet".

Invalid triplets in other packets such as X/28/0 will still be zeroed out at
load time.

Since the TTI format has no provision for storing invalid triplets, saving a
page will convert the invalid triplets to reserved mode 11110 as described
above.

The actual bits of invalid triplets are not stored on the assumption that
they are not recoverable. Thus exporting to t42 format will write an invalid
triplet as a Hamming coded result of all zero bits which will still cause a
Hamming decoding failure.
2025-11-04 17:56:04 +00:00
Gavin MacGregor
1b3623d61b Move some getters from headers 2025-10-29 19:37:56 +00:00
Gavin MacGregor
6c46aba687 Tag version 0.8.1-beta 0.8.1-beta 2025-10-26 14:20:04 +00:00
Gavin MacGregor
07abbdf928 Fix deeper zooms not being saved properly 2025-10-26 10:53:13 +00:00
Gavin MacGregor
30bff43a14 Restore geometry and state after central widget creation
Attempts to fix a bug where the central page editing widget was sometimes
squashed to a tiny size in the corner.

Also introduces a schema for settings storage. There are no changes in this
schema; this is (mis)used to forget the geometry and state when version
0.8.1 is started for the first time to make sure the central widget is
usuable again.
2025-10-24 22:49:35 +01:00
Gavin MacGregor
d9c93cfe66 Ensure decoder and gif library are built in 2025-10-21 14:43:02 +01:00
Gavin MacGregor
f18cf60b27 Add Clear Files option to Recent Files 2025-10-19 16:17:52 +01:00
Gavin MacGregor
877478859c Tag version 0.8-beta 0.8-beta 2025-10-14 15:57:49 +01:00
Gavin MacGregor
f4fe4aaa2e Purge qt_* specific stuff from CMake
Appears to solve a spurious qt.conf being installed in bin directory.
2025-10-14 13:22:55 +01:00
Gavin MacGregor
34bff3965b Add DRCS examples 2025-10-13 21:22:16 +01:00
Gavin MacGregor
6d9c31e7bc Select Level 3.5 if X/28/1 DCLUT packet is found 2025-10-12 19:14:05 +01:00
Gavin MacGregor
feffca85f8 Add a desktop entry file 2025-10-07 21:32:21 +01:00
Gavin MacGregor
b573ee52b1 Fix CMake deprecation warning
Minimum Qt version is now 6.5
2025-10-06 15:45:33 +01:00
Gavin MacGregor
9a17a3624f Change border from blue to GUI background colour 2025-10-05 21:48:11 +01:00
Gavin MacGregor
3a084e1561 Export region to zxnet editor 2025-09-11 21:14:39 +01:00
Gavin MacGregor
14ee3fb39a Avoid reserved values when creating G0 diacriticals 2025-08-31 21:53:00 +01:00
Gavin MacGregor
06ca1e13ae Rename a couple of DRCS widgets 2025-07-29 18:35:23 +01:00
Gavin MacGregor
5b250beedc Ensure DRCS mode doesn't affect past DRCS characters 2025-07-29 18:04:47 +01:00
Gavin MacGregor
ead6700002 Add transparency to exported images 2025-07-27 14:10:06 +01:00
Gavin MacGregor
4ef0b016aa Improve appearance of capital letters with diacriticals
Added reduced-height Latin G0 capital letters to the font to make room for
diacritical marks to sit on top.
2025-07-23 15:20:12 +01:00
Gavin MacGregor
d326748371 Add DCLUT editing 2025-07-20 15:32:13 +01:00
Gavin MacGregor
d8e0a2f3e2 Implement exporting subpage image to clipboard 2025-07-13 19:20:44 +01:00
Gavin MacGregor
dad86a80f4 Fix compiling with Qt 6.9 2025-06-29 13:46:22 +01:00
Gavin MacGregor
541654a7f7 Implement DRCS context menus 2025-06-19 16:10:41 +01:00
Gavin MacGregor
962d308b56 Avoid reserved values when creating DRCS Mode triplets 2025-06-19 11:56:36 +01:00
Gavin MacGregor
ebee613a22 Read DCLUTs from X/28/1
DCLUTs cannot be edited yet.
2025-06-18 12:28:00 +01:00
Gavin MacGregor
0fd581925a Uncolour mode 1-3 PTUs on monochrome rendering modes 2025-06-16 20:22:37 +01:00
Gavin MacGregor
7f0de4410b Do some checks for malformed tti files, wrt GH-10 2025-06-15 19:09:52 +01:00
Gavin MacGregor
e574526ca4 Workaround for DRCS menu sections on Windows 2025-06-10 12:45:53 +01:00
Gavin MacGregor
e1ba67484f Implement DRCS rendering
External pages with DRCS definitions can be loaded using the options in the
"DRCS pages" submenu within the "View" menu. Two DRCS pages can be loaded,
one for Global DRCS definitions and the other for Normal DRCS definitions.

Level 2.5 mode 0 PTUs are fully supported.

Partial support for Level 3.5 mode 1, 2 and 3 PTUs. DCLUTs defined in X/28/1
on the main page are not yet implemented; the characters currently appear in
the default DCLUTs described in D.1.6 and D.2.2 of the ETSI spec.
2025-06-09 18:57:16 +01:00
Gavin MacGregor
519c961cff Tweak flashing logic 2025-06-01 12:50:33 +01:00
Gavin MacGregor
07c6eed3fe Add getter for decoder level 2025-05-27 18:39:19 +01:00
Gavin MacGregor
8675cef6c5 Load files into QList of PageBase objects
A document is first loaded as a generic PageBase before being converted to
level one pages afterwards.

This is preparation for loading pages of other types such as DRCS and Public
Object Pages. The latter will need further work as the non-TTI file loaders
blindly assume X/1 to X/25 are 7-bit odd parity coded.

This also reverts 0a1c018 putting back the copy constructor that allows
a PageBase to be converted to a LevelOnePage.
2025-05-27 17:34:18 +01:00
Gavin MacGregor
42fd870749 Make setting NOS bits and Fastext links more agnostic
Uses generic setControlBit and setPacket instead of the Level One document
calls to set the NOS bits and FLOF links.
2025-05-25 22:01:42 +01:00
Gavin MacGregor
041a35a597 Move page function and packet coding 2025-05-25 14:42:03 +01:00
Gavin MacGregor
395f3769cb Separate metadata loading
"Metadata" is data which is stored in a teletext file format but is not part
of the page itself, such as DE description and CT cycle time in the TTI file
format.
2025-05-25 12:54:14 +01:00
Gavin MacGregor
3f93da8c1a Fix copy assignment 2025-04-02 19:05:22 +01:00
Gavin MacGregor
cc5219a16b Move document class 2025-04-02 14:44:30 +01:00