|
BurdockPaint
My AAT tribute
I liked the old Autodesk Animator very much, but Moai won't run well on my machine, so I decided to create a pixel graphics editor based on both of those, adding the things I missed in them.
Source is available at Github: https://github.com/MKGilby/BurdockPaint
Product state: work in progress
Current version: V0.9
Released: 2023.05.11
Download: BurdockPaint.0.9.20230511.zip
What's new:
2023.05.11
- Right clicking on RGrad button hides Controls and invokes RGrad configuration.
2023.05.10
2023.05.09
- Added (D) button, it toggles gradient dithering. Right clicking it opens DitherDialog.
- Inks respects dithering settings.
2023.05.08
- Right clicking on the palette area in PaletteEditor activates color picker
instead of closing PaletteEditor.
- Left clicking on color bars in ColorCluster selects the clicked color.
- Right clicking on color bars in ColorCluster activates color cluster picking.
Click on start color then click on end color.
- Passing a filename to the program uses that file as temporary project file.
- Removed console window in RELEASE mode.
2023.05.04
- Fix in BDPMap. Pingpong and Reversed ColorCluster flags was mixed up.
- ColorCluster now has buttons for Reversed and Pingpong modes. They works!
- Fix in saving ColorCluster flags.
2023.05.03
- Fixes in Project and UndoSystem to compile to Win32 target.
2023.05.02
- New ColorCluster outfit. Added an arrow to the right side, it will be used to
open the ColorClusterSelector.
- GetIndexAt and GetIndexAtDithered fix. The last color was not given back.
- PaletteEditor now shows the active image's color cluster.
- Project/Quit was broken, fixed.
2023.04.28
- Project/Open works.
- Project/"Save clear" works.
2023.04.27
- Added dithering to LGrad. It is fixed now, but the setup dialogs will solve this.
2023.04.26
- Color selector colors are increased to 9 to be the same width as ImageCountSlider.
- Added ImageCountSlider. You can change active image in Project with it.
- Undo/Redo buttons are refreshing as you change active image.
- Image/New works. It adds an empty 320x200 image to the Project. It brings up
a dialog to select new image's place:
- First: New image will be the first image of the Project.
- Last: New image will be the last image of the Project.
- Insert: New image will be inserted before the current image into the Project.
- Cancel: Don't create image.
- Image/Remove works (if there are more than 1 images in Project). It brings up
a confirmation dialog.
- Image/Remove is enabled/disabled based on image count in Project.
- Created a tool to show map of files created by BurdockPaint. (BDPMap)
2023.04.25
- BUGFIX: Losing the first click after receiving focus (after the external save dialog)
is a feature in SDL2 which can be disabled with:
SDL_SetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, '1');
- Default palette is loaded from BDP format instead of COL.
- Added Changed property to TBDPalette.
2023.04.24
- Project/Save works, a pop-up message appears on successful save.
- BUG: You have to click twice the pop-up message's button.
First click is hijacked by some other control. (Need investigation!)
2023.04.21
- Merged button, slider and colorbox classes in one unit (BDPBasicControls).
- Renamed units (removed the word unit from the end of the names).
2023.04.14
- Menus are loaded from external file. (look at \work\menu)
- Added 16x zoom. (+1 level)
- Added About menu.
- Renamed SplashScreen to AboutDialog.
- Updated AboutDialog with licensing info and added a button to close it.
2023.04.13
- Removed system state from fileformats.txt.
- Fixed undo block types in fileformats.txt.
2023.04.12
- Restructured fileformats.txt.
- Added Extended Image data block (E) and Project data block (P) to fileformats.txt.
- Added project and extended image class with saving to and loading from stream.
- BDPUndoUnit variable names uniformized, added CreateFromStream where missed.
- Global variables are changed to Project properties:
MainImage, OverlayImage, ColorClusters, CELImage, ImageUndoSystem, PaletteUndoSystem
- OverlayImage palette is separated from OverlayImage.
2023.04.11
- New color cluster system.
- Gradient inks uses the new color cluster system.
- Preparations for saving/loading color clusters and the visual control of it.
- Color clusters are saved into system state and read back on startup.
- Added ColorCluster to PaletteEditor.
- ColorCluster shows the selected color.
2023.04.09
- Added ColorBox to PaletteEditor. It shows the selected color in a bigger area.
2023.04.07
- Following changes in vcc2_VisibleControl unit.
2023.04.06
- Button's texture is only updated when button state (selected or enabled) is
changed.
2023.04.05
- SelectColor tool hinting fixed, now it allows showing hints from other controls.
- ColorSelector added to PaletteEditor.
- Messages are forwarded only to visible controls.
- Right clicking on ColorSelector in PaletteEditor allows you to pick color from
the image or from the palette.
- Added two mouse click icons to the new font. This makes the old font unusable,
since it doesn't have these icons.
- Added mouse click tips to SelectColor and PickColor hints.
- Right clicking the palette area of the PaletteEditor closes it (as the hint says).
- Added the code that creates the four corner arches.
- Made the arches in buttons and sliders split into four corners. So the size
of the control is variable.
2023.04.04
- Under the hood: MKMouse2 changes and follow ups.
2023.03.29
- UndoSystem is distilled to a base class and added ImageUndoSystem and ColorUndoSystem.
The latter is not saved in system state yet.
- File format change in system state. This one breaks the compatibility with older
saves. (Added Version so it won't do it in the future.)
- ColorUndoSystem is included in the system state save.
- After changing palette color with sliders it is possible to undo/redo the change.
- When leaving slider with button down, it goes back to original position.
2023.03.28
- Moving mouse over the palette in the PaletteEditor show color hint.
- When you are in the PaletteEditor, color hint only visible over the DrawArea or
over the palette colors.
- Releasing RMB after panning no longer exits PaletteEditor.
- Added mouse panning enum, instead of numbers.
- Added Undo/Redo buttons to PaletteEditor. (Not working yet.)
2023.03.24
- Added a new, modern font for the modern look. (Drawn entirely with this program!)
- InfoBar now appears above the current panel (Controls or PaletteEditor),
and on the top of the window when no panel is visible.
- GetCEL and PutCEL now shows coordinates in first state too.
- Added degree symbol to the rotate dialog.
- Submenus can have hints.
2023.03.23
- Code cleanup in MainUnit.
- When you release CEL, all menus requiring active CEL are disabled.
- When you get or load a CEL, all menus requiring active CEL are enabled.
- Under the hood: MouseObjects only calls draw for visible objects.
- CEL/Put works.
- CEL/Save works. It saves the CEL in .bdc format. (See fileformats.txt)
2023.03.22
- Modal dialogs are reworked, less code to create a new one.
- Fix in rotate, 180 and 270 crashed.
- Modal dialog units are merged into one file.
2023.03.21
- Some tools didn't clear the Infobar after them. Fixed.
- Rotate CEL dialog appears when selecting CEL/Rotate. You can select the amount
to rotate by the buttons, or pressing keys 1..3. Clicking "OK" or pressing Enter
will rotate the CEL, "Cancel" will close the dialog without doing anything.
2023.03.20
- Undo/Redo buttons now uses OnClick event instead of the MessageQueue.
- SubMenuItems now can be disabled. (Appears in grey and remains grey when the
mouse points it.)
- File/Quit works, but it quits instantly without asking anything.
- Added CELSHOW tool. It shows CEL for a short interval (1s). Useful after
loading or modifying cel.
- The loaded CEL is always moved to 0,0. After loading CEL the CEL is visible
for a short time.
- Fix: MessageQueue.AddMessage still accepted string value but did nothing with it.
- CEL/Flip V and CEL/Flip H works.
- Magnify CEL dialog appears when selecting CEL/Magnify. Dialog items work, but
CEL is not magnified when OK clicked. You can use key 2, 3 and 5 to select
magnification, Enter to "OK" and Escape to "Cancel".
- Magnification works.
- PutCEL now shows CEL's top-left coordinate and the relative position to
original place.
2023.03.19
- Fix: When right clicked on drawarea to cancel color picking, ToggleControls
also occured.
- Fix: When right clicked to cancel any tool, ToggleControls also occured.
- ToggleControls now toggles MainMenu too, to let the user see the whole window.
- Closing the window with red X now shuts down app correctly.
2023.03.18
- Fix: You couldn't right click the key color to pick another color in color selector.
- Fix: When the same color appears more than once in the color selector, right
clicking any of it caused all of them to appear as color picking target.
2023.03.17
- Color sliders moved just above the palette block in PaletteEditor.
- Fixed mouse wheel events.
2023.03.16
- MediaManager is reduced to GFXManager to remove the dependency on BASS.DLL.
Should switch Bass to SDL2 but that's out of this project's scope.
- BuildRelease.bat added. It builds release executables (both x86 and x64) and data file
into ..\_release.
- SDL2 dll names are changed to allow both dlls to be in the same folder.
Source modified to pick the correct dll.
2023.03.15
- Sliders are visible again.
- BUG: Sliders don't receive MouseWheel event.
- Added and wired Alpha slider.
- Changed target architecture to x64.
- Changed SDL2 libraries to SDL2-for-Pascal (more up to date).
2023.03.14
- Color selector visible and works again.
- Still working under the hood.
2023.03.11
- Big rework under the hood regarding mouse events and visual components,
so a few things are broken now:
- Color selector is not visible.
- Sliders are not visible. (If somehow you can invoke palette editor.)
2023.03.10
- SubMenu items insert a message into queue when clicked.
- Clicking on CEL/Load invokes the windows standard open file dialog. Browsing an
original AAT CEL file and click open will load the file into CELImage.
It doesn't yet color fits the loaded CEL.
- MSG_MOUSECOORDS messages are removed. They caused queue overflow because when
a file dialog was open, but the mouse moved over drawarea, SDL accumulated the
events and fired all at once when the dialog was closed. Coordinates are read
from DrawArea and passed to Controls in main loop instead.
- Clicking on Picture/Clear clears MainImage to key color.
- Clicking on CEL/Release frees up CELImage. This operation is not UNDOable!
- GetCEL hides and shows MainMenu beside Controls.
- Clicking on CEL/Get invokes GetCEL tool.
- BUG: The whole fControls stopped working.
2023.03.09
- Submenu opens when hovering mouse on menu. Moving to another menu or outside
the menu bar or submenu hides the submenu.
- Moving the mouse over the submenu moves the selection.
2023.03.08
- Using mouse wheel over the palette colors in PaletteEditor switches banks.
- Menu appears in the top row of the screen.
2023.03.07
- Moved the vertical slider's mouse wheel event to the vcc_SliderLogic unit, where it belongs.
- Added wheel event to the horizontal slider too.
2023.03.06
- You can change the vertical slider with mouse wheel.
- The vertical slider in PaletteEditor switches banks.
- Using the mouse wheel over the PaletteEditor no longer zooms DrawArea.
2023.03.03
- CreateRelease.bat added.
- KeyMapping is saved back to INI file.
- When in PaletteEditor, right clicking on DrawArea exits PaletteEditor.
- Added a vertical slider to PaletteEditor, it will switch the palette banks. (Not yet doing it.)
2023.03.02
- Added sliders to PaletteEditor. They are not changing anything yet.
- Sliders now change the currently selected colors RGB channels.
- When invoking PaletteEditor, the sliders are set to the selected color's RGB values.
- Clicking on the colors on the PaletteEditor changes the current color and sets
the sliders accordingly.
- After invoking PaletteEditor, clicking on the draw area selects current color.
2023.03.01
- Removed string data part from Messaging subsystem.
2023.02.28
- New tool: PickColor (PICKCOL). When activated, click anywhere on the draw area
to pick a color. That color is put on the MessageQueue in a MSG_PICKEDCOLOR message.
- Right clicking on ColorSelector invokes PICKCOL, and the picked color
is put into the selected slot.
- The picked colors are saved in INI file.
- Middle click on ColorSelector to invoke PaletteEditor.
- The currently "picked" color slot is highlighted with VibroColors.
- FIX: Clicking the thin line beetween the key color and the other colors
no longer invokes color picking for the selected color.
- Pressing F1 changes the ActiveColorIndex to the color under the cursor.
- Get rid of MSG_ACTIVATETOOL and MSG_ACTIVATEINK. Using the buttons TAG property
and OnClick event instead.
- Changed mouse button checks to SDL_BUTTON* constants.
2023.02.27
- Undosystem now saves only region data instead of palette+region in region type
undoitem. (It was correct in the file format text, only implementation was wrong.)
- New block type in filetypes (SystemState - S-block).
- System state (image current state, palette, undo state and CEL if exists) saved
to state.bds.
- ColorSelector selects color only by left clicking on it.
- Removing some obsolete code and declarations here and there.
- Button appearance can be changed in INI file. (Settings/ModernGraphics)
- Right clicking on ColorSelector invokes PaletteEditor. Cannot go back, you have
to quit (Q->Y).
- Palette Editor shows the first 256 colors, highlights the active color.
2023.02.26
- Undo/Redo buttons are disabled when nothing to undo/redo.
- BUGFix: Sometimes the render to texture failed to render. Especially when after
changing zoom level the whole picture got outside of DrawArea.
- Message handling moved to TControls for messages needed to be handled by TControls.
2023.02.25
- UndoSystem state saved and loaded (temp.bdu).
2023.02.24
- File format changed.
- File format documented in fileformats.txt.
2023.02.22
- Added Undo/Redo code to Circle.
- Added Undo/Redo code to Draw.
- BugFix: Controls now captures OnMouseDown if none of its child does it.
This prevents Draw to start drawing without pressing LMB over the draw area.
- Added Undo/Redo code to Fill.
- Added Undo/Redo code to FillTo.
- Added Undo/Redo code to Line.
- Added Undo/Redo code to Sep.
- Added Undo/Redo code to PutCEL.
- Added UndoLimit to Settings (16 steps by default).
- UndoSystem respects UndoLimit. If a new item is added over the limit,
the oldest item is removed to keep the item count in the limit.
- Fix: TBDPalette.CopyColorFrom ignored start and count.
2023.02.21
- Added Undo/Redo mechanism. (Not tested yet...)
- Added Undo/Redo buttons. (Not working yet...)
- Added Undo/Redo code to Box. You can now undo and redo Box drawing.
2023.02.19
- PutCEL now works as intended.
- PutCEL respects the state of (K) button.
- Vibrocolors is now a class and changes colors based on ticks instead of program loops.
2023.02.17
- Created a logo font, it is used in the splash screen.
- Added icon.
- GetCEL now stores position too.
- Pressing ESC or ` when in GetCEL or PutCEL cancels curent operation.
- Image position saved into BDP file. (Needed in CEL)
- PutCEL almost works as expected. Only thing is missing putting the CEL onto the image.
2023.02.16
- Pressing ` (the key below ESC) invokes PUTCel. It doesn't work fully, you can
just move the picked CEL image around with the mouse, until you quit.
Cannot continue now, I drank a beer and cannot concentrate anymore. :)
2023.02.15
- Added color selector to controls.
- Added selected colors to Settings, so they are saved on exit and loaded on startup.
- Clicking on color selector selects the clicked color.
- The selected color is used when Opaque ink is selected.
- The selected color is saved into Settings.
- On startup the color selector selects the box that contains the color saved in Settings.
2023.02.14
- Small bugfix in writing color index under cursor.
- Removed (A) button. Has no meaning with paletted mode.
2023.02.13
- Bugfix with clickin anomaly. Click was on mouseup in TMouseObject, but was
on mousedown in TDrawArea. Changed it in TDrawArea.
2023.02.12
- GETCEL really copies the selected area into CELImage.
(It saves it to a PNG on exit, to be sure.)
- CEL is saved on exit and reloaded on startup.
- BUG narrowed down: The colored line appears only in PNG file and
only with odd width. So the bug is in the PNG writer.
- BUG fixed: Writing paletted images with odd with and 4, 2 or 1 bitdepth was
bugged. (Had to move the bit shift operations after adding the color bits.)
2023.02.10
- Added Pinnable property to tools, to differentiate between tools that can be
selected in tool selector and the tools that cannot be selected. (The latter
are used internally like GETCEL or PUTCEL.)
- Bugfix in BOX tool.
2023.02.02
- Added a small area showing cursor coordinates and color index under cursor.
(Currently it is the part of Controls, but should separate it, to be visible
even with hidden Controls.)
2023.02.01
- Drawing shapes respects the (F) button.
- Added a nice splash screen. (Turn it off in the .ini [Settings]/ShowSplash=No)
2023.01.31
- Added (F) (K) and (A) toggle buttons. (Fill shapes, clear key color and use alpha respectively)
- Cosmetics: Fix in system font in letter K and L. These were only 4 pixel width.
2023.01.30
- ESC hides controls and activates CEL picker. Right clicking in any phase will
return controls and activates previous tool.
2023.01.27
- Using TStreamingTexture as DrawArea. It makes the FPS go over 60.
- Added secondary key mapping form zooming.
2023.01.26
- Changed vibrocolors.
- Added CEL picker. Currently you have to click on GETCEL button to activate.
- Added clipping for image drawing methods.
- Optimized render to screen.
- Added FPS counter. It seems that in lower zoom levels the fps count falls drastically.
2023.01.25
- Quit like in the original. Press Q, and click yes or no, or press Y or N.
- Key mapping added, stored and loaded from the settings.
- You can assign keys to Quit, Yes and No.
- Added keymapping to panning keys, centering and zooming.
2023.01.24
- Added tool and ink buttons.
- Clicking them changes the selection.
- Bugfix in TContainer.HandleEvent.
- Bugfix in TMouseObject.HandleEvent.
- Drawing with tools is working now, using the selected ink.
2023.01.23
- Cursor drawing optimized. (Removed setting color before every draw by
calling direct SDL2 procedures instead of MK_SDL2 wrapped ones.)
- Added comment in MKMouse2 about ZIndex. (To be sure.)
- Added Inks.
- Added Tools.
- Added overlay image (not using it yet).
- Added Vibrocolors array.
2023.01.20
- Added ZIndex to TMouseObject.
- Added TMouseObjects.Sort to sort objects by ZIndex. (Could be better if Add
would insert the object to it's proper place)
- DrawArea added.
- DrawArea is rendered to PrimaryWindow directly.
- Panning with right mouse buttons works.
- Zooming with mouse wheel works.
- Panning with arrow or WSAD keys works.
- Cursor added to DrawArea.
2023.01.19
- Palette and Image class added.
- Saving temporary image at exit.
- Loading temporary image at startup or creating a new empty one if file not found.
- Comments added on TBDImage class definition.
2023.01.17
- Bottom controls panel appears with one clickable button.
- Clicking the button will select or unselect it.
2023.01.13
- Restarted with SDL2.
- Window appears with a static infobar.
What's planned next:
- Add "Project"/"New" dialog.
- Check and warn if current project is modified on opening project.
- Check and warn if current project is modified on new project.
- Add "Random" ink. It will use colors randomly from the selected cluster.
- Ask for color fit when loading a CEL file.
- Autosave state in every 1 min.
- Configurable autosave interval.
- Add setup dialogs to Tools:
- Circle (center+radius vs. bounding box)
- Sep. (boxed)
- Add setup dialogs to Inks:
- None of the current Inks needs it.
- Add Tool and Ink selector
- Should create backups from project on saving if not the default temporary project.
| |
|