Commit Graph

19 Commits

Author SHA1 Message Date
Haven1433
417eb04338 first pass at adding braille support
add the classes / types needed to support braille text. Still needs testing, but this is the skeleton.
2022-09-04 23:32:30 -05:00
Benjamin Popp
7826d8246d Improve Tuple Copy/Paste
* Allow pasting tuple elements with spaces
* Improve how tuples treat leading space / +
* Allow typing [] to truncate a tuple run
* Include a [] at the end of a stream during deep copy
2021-04-02 23:44:47 -05:00
Benjamin Popp
32113ed0e4 Initial UI for tuples
Adding both the XAML for checkboxes / comboboxes, and the dataformat for displaying tuples inline.
2021-01-27 10:27:56 -06:00
Benjamin Popp
2fb7236580 Introduce new decorator format
SpriteDecorator wraps other formats, providing the extra behavior of having a sprite background. This can be used to draw a sprite behind a single cell or behind a group of cells.

To get the z-ordering right, the info from SpriteDecorator is read during a new RenderBackground method, which happens before RenderData.
2020-12-31 14:32:38 -06:00
Benjamin Popp
0456d1d141 Allow Hex content in tables 2020-06-09 15:00:50 -05:00
Benjamin Popp
7565267fea Rename / Move
* Move RunFactory to model, since it's not a viewmodel piece
* Rename compressed Sprite/Palette runs to remove naming collision.
* Make a subfolder for all the image-related runs and related types.
* Make a subfolder for all the factory strategies.
* Cleanup using statements
* Document Run information on the factory strategies.
* Sort tests folder a bit
2020-04-08 21:44:51 -05:00
Benjamin Popp
a26b2f101d Add new format for displaying RGB palette values inline. 2020-03-29 18:29:13 -05:00
Benjamin Popp
618d233dce Add Uncompressed Sprite/Palette Runs
These don't have any custom data formats yet. The thing they do have is an implementation of an interface: ISpriteRun and IPaletteRun. These will form the basis of interaction with a new tool, SpriteTool, similar to how IStreamRun interacts with TextTool and ITableRun interacts with TableTool.
2020-03-21 22:35:35 -05:00
Benjamin Popp
9aa27857a6 Initial introduction of LZ Data Formats
LZData isn't too complex, but it does involve many types of tokens, and thus many formats.
(1) the magic 1-byte header
(2) the 2-byte compressed token
(3) the 1-byte uncompressed token. This is really just raw data, but isn't the same as `None` because it can't be freely converted to a pointer or a length-token and shouldn't have the "this is text" right-click menu items
(4) the 1-byte section header. This is also similar to raw data, but we probably want to display it in a different color to make it obvious that it's a section header and not just an uncompressed byte.
2020-02-29 20:12:49 -06:00
Benjamin Popp
f1e13a52b6 Don't crash when the user hits backspace on a bitarray 2020-02-21 20:17:27 -06:00
Benjamin Popp
85a5e6e5a1 Table Streams with an EndCode should be able to render that end code as a data format
Adding this new data format required that we define its behaviors for lots of things. For now, we'll assume that the only valid thing the user can do with an end token is to extend the table.
2019-11-28 10:05:48 -06:00
Benjamin Popp
e4156c418d Better change tracking implementation & UI
change tracking was previously done in the model, but exposed in the ViewModel via a data format. The problem with this is that it meant that all changed formats were wrapped in a new format, which would require a lot of work to fully validate.

The new implementation is still in the model, but exposed in the ViewModel through a new property on the HexElement. The data formats are unchanged.
2019-11-06 12:36:26 -06:00
Benjamin Popp
d878c2ae9d Refactoring to make it possible to show edited cells 2019-11-05 22:11:24 -06:00
Benjamin Popp
9bc191f697 Introduce WordRuns
WordRuns, like PointerRuns, can live anywhere in the file and don't require anchors to them. Instead of needing an anchor to them, they specify the name of a table that they are matched to. Whenever that table's length changes, the WordRun's value is automatically updated to match the table length.
2019-06-28 21:54:47 -05:00
Benjamin Popp
11694e8424 Get it building 2019-06-23 20:57:31 -05:00
Benjamin Popp
b6b75deaae First push for PLM Streams
PLM Streams (pokemon learn moves)
I can now add streams via the ViewPort
2019-05-30 22:10:14 -05:00
Benjamin Popp
60be3bd7e6 Updates from review
* code quality improvements
* fix a crash when backspacing egg formats
* fix a crash when backspacing all the way to empty
* fix data corruption when edit-exiting multi-byte formats
*
2019-05-22 22:08:57 -05:00
Benjamin Popp
1c70f8379a Initial Introduction of EggMoveStream recognition
The Egg Move stream has 2 types of data in it, each of which is 2 bytes long. Either it's a pokemon, or it's a move. (There's also the end, FF FF). This is the initial test to show that we can read an egg move stream from a format.
2019-05-12 21:53:24 -05:00
Benjamin Popp
5d7c6e38d0 Refactoring ViewPort Part 1
Introduce a new class, StartCellEdit, that handles the code that used to live in the first half of the ShouldAcceptInput method.
2019-05-08 21:13:14 -05:00