Releases: jbunke/stipple-effect
Stipple Effect v1.2.1
Update Summary
Full changelog: v1.2.0...v1.2.1
Added:
- Minimum values are enforced on startup for settings that could lead to crashes
- Extended the Color Picker tool with two alternate modes
- Holding Shift searches layer by layer for the highest non-transparent color at the specified pixel; does nothing if no such pixel is found
- Holding Ctrl samples the pixel from the flattened project
- Normal map color sampler with quantization option
Fixed:
- Bug: Attempting to validate a script with no return type crashes the program
- Bug: Crashes due to impossible layout/sizing logic
Stipple Effect v1.2.0
Hey everyone!
I'm happy to announce that I have just released a huge update to Stipple Effect! This update massively extends and improves the scripting API, the preview window and the onion skinning system.
You can read the full blog post here: https://flinkerflitzer.itch.io/stipple-effect/devlog/793216/120-major-improvements-and-additions-to-scripting-preview-window-and-onion-skinning
As always, you can download the Windows installer or the cross-platform binary if you have purchased Stipple Effect on Itch.io, or you can compile the update from source with the instructions found in the README.
Admin
I am in the process of reorganizing the projects related to Stipple Effect. The documentation, API, and DeltaScript are all housed in their own dedicated repositories now. This will make it easier to deploy documentation to different places, such as the personal website I am working on in my spare time.
- Stipple Effect API
- Stipple Effect documentation
- DeltaScript (the base language the Stipple Effect API extends)
What's Next?
I have big plans for v1.3, which will be centered around a command-line tool that will enable users to test and run scripts without the UI.
However, before I start working on that, to make the program and its technical features more accessible, I will be working on the DeltaScript language specification and the Stipple Effect documentation, and I need your help! If you are a Stipple Effect user and a fluent English speaker with good technical writing skills, I would love for you to help me with the documentation. You can do this by forking the documentation repository linked above, making changes like correcting typos or adding content, and submitting a pull request for my consideration. I will be sure to write a contribution guide ASAP to go into more detail.
Update Summary
Full changelog: v1.1.0...v1.2.0
Added:
- Layer visibility actions to navbar under "Layer" -> "Visibility status"
- Bug reporting, scripting API, VS Code extension links to navbar under "Stipple Effect" -> "Resources"
- Setting for whether preview windows are opened in a separate window
- Reimport a preview into Stipple Effect with layers preserved
- Generate time lapses that track project changes
- New brush shapes
- Square
- Line + angle
- Added setting to propagate changes made to breadth tool properties to all tools; affected tools:
- Brush
- Shade Brush
- Script Brush
- Eraser
- Line Tool
- Shape Tool
- Gradient Tool
- Frames with non-standard durations show an asterisk (*) next to their frame number
- Added
{
and}
to the illegal character set for names (filename, layer name, etc.)
Changed:
- Overhauled and extended onion skin system
- Onion skins can now be rendered below or above the cel contents
- Onion skin types:
- Standard translucent copy of contents
- Outline
- Tinted
- Render skins for up to 6 cels behind or ahead of the current frame index
- Improved file dialogs on Windows
- Combined file dialog file filters for .stip and image files into a single filter
(image -> image)
preview scripts can be run on animated projects- Cosmetic and layout changes
- Simplified and shortened color sampler labels
- Updated Zo theme colors
- Updated layer button layout and flipbook panel sizing
- Preview window changes
- Preview windows are now resizeable
- Preview windows can run in the main program window or a separate window as before
- Preview windows now persist across project context switches
- Palette colors are assigned differently according to the mouse button clicked:
- Left click: primary color
- Right click: secondary color
- Middle click: selected color (most recently assigned or modified of primary and secondary)
Fixed:
- Bug:
$SE.single_outline()
calls a double outline instead of a single outline - Bug: void helper functions cannot be called
- Bug: suspended execution due to file dialog display leads to a playback backlog
- Bug: attempts to create the settings folder every time the program writes settings
API Changes:
-
Added:
- New types
script
save_config
- Constants
- Scope constants that evaluate to
int
$SE.PROJECT
=0
$SE.LAYER
=1
$SE.FRAME
=2
$SE.CEL
=3
- Save type constants that evaluate to
int
$SE.NATIVE
=0
$SE.PNG_SHEET
=1
$SE.PNG_SEPARATE
=2
$SE.GIF
=3
$SE.MP4
=4
- Dimension constants that evaluate to
bool
$SE.HORZ
=true
$SE.VERT
=false
- Scope constants that evaluate to
- Added
layer
functions; for somelayer L
...-
L.get_name() -> string
-
L.set_name(string);
-
- Added
project
functions; for someproject P
...-
P.get_width() -> int
-
P.get_height() -> int
-
P.get_layer(string) -> layer
-
P.get_save_config() -> save_config
-
P.save_as(save_config);
-
- Added global functions
-
$SE.read_script(string) -> script
-
$SE.new_save_config(string[], string, int) -> save_config
-
$SE.transform(project, script, bool, bool) -> project
-
$SE.transform(project, script) -> project
-
$SE.new_project(int, int, bool) -> project
-
- New types
-
Changed:
- Renamed
layer
functions; for somelayer L
...- Renamed
L.get_frame(int)
toL.get_cel(int)
- Renamed
L.set_frame(int, image)
toL.set_cel(int, image)
- Renamed
L.wipe_frame(int, image)
toL.wipe_cel(int, image)
- Renamed
L.edit_frame(int, image)
toL.edit_cel(int, image)
- Renamed
L.link_frames()
toL.link_cels()
- Renamed
L.unlink_frames()
toL.unlink_cels()
- Renamed
L.disable_layer()
toL.disable()
- Renamed
L.enable_layer()
toL.enable()
- Renamed
- Renamed
Stipple Effect v1.1.0
The UI/UX Update
Full Changelog: v1.0.1...v1.1.0
Update Summary
Added:
- Draggable buttons: buttons can be clicked and dragged to resort...
- Frames
- Layers
- Palette colors
- Cel buttons
- A range of cels across multiple frames and layers can be selected
- Cel selection operations: copy, cut, paste, delete
- Multiple color sampling modes
- RGB-A sliders
- HSV-A sliders
- Saturation-value matrix
- Color wheel
- Navigation bar
- Number key icons to first 9 project buttons
Changed:
- Layout overhaul
- The layers and frames panels have been replaced with the "flipbook" panel
- The colors panel now displays the color sampler and the palette simultaneously
- The preset palettes are no longer preloaded; can now be accessed in the navigation bar
Fixed:
- Bug: Tool mouse actions can still be executed when the cursor is in a dropdown menu
- Bug: Cannot use the brush tool without a selected palette
API Changes:
-
Removed:
- Removed the property
mutable
of the typepalette
- Removed the property
-
Changed:
- API references to
LAYER-FRAME
have been renamed toCEL
; no changed behaviour
- API references to
Stipple Effect v1.0.1
Full Changelog: v1.0.0...v1.0.1
Update Summary
Added:
- Zoom levels 125%, 150%, and 175% for smoother zooming
- Pressing Esc while a dialog menu is open will clear the dialog; equivalent of "Cancel" button
Changed:
- 2x the program frame rate to 60 FPS
- Tool tips display after hovering over a button for 0.25 seconds, twice as fast as before
Fixed:
- Bug: Script calls to .keys() not being handled correctly
- Bug: Box select tool does not select off-canvas pixels inside the selection bounds
- Bug: Reimporting a scripted preview inherits layer name from its source project
Stipple Effect v1.0.0
Official Release
This update marks the official release of Stipple Effect!
Full Changelog: v0.5.1...v1.0.0
Update Summary
Changed:
- Optimized Move Selection tool preview overlay
- Optimized selection overlay rendering
- Updated program logo
Fixed:
- Bug: Breadth tool overlays are not redrawn at a zoom level of 100%
Stipple Effect v0.5.1
Full Changelog: v0.5.0...v0.5.1
Patch
Fixed:
- Bug: Attempting to pick up a selection with pixels off the grid is causing the program to crash
Stipple Effect v0.5.0
The Performance Update
Full Changelog: v0.4.2...v0.5.0
Update Summary
Added:
- Added tools
- Shape tool (hotkey R)
- Script brush (hotkey Q)
- Polygon Select now has a "close polygon" shortcut (Shift + Left Click)
- Images can now be pasted from the system clipboard
- Added themes:
- Asylum
- Ramallah
- Added "snap to target pixel" behaviour (Shift + Enter)
- Stretch operation can now be snapped to the pixel grid by holding Shift
- Added relative frame durations so some frames can be displayed for more or less time than others
- Added history dialog (Shift + Y) where users can browse all cached project states and revert to any of them
- Added playback controls to preview dialogs
- Added keyboard controls to the preview window's playback controls
Changed:
- Optimized selection overlays
- Optimized selection logic
- Optimized search algorithm (Wand and Fill tools)
- Now discards intermediate (granular) project states after five new checkpoint project states
- Updated themes:
- Zo
- Neon
- Bunkering
- Move selection and pick up selection action previews are rendered in a different style
- Changed frame limit from 100 to 300 and layer limit from 100 to 50
- Increased maximum canvas bounds to 1920 x 1080 pixels
- Improved selection transform node manipulation
Fixed:
- Bug: PIXEL_GRID_ON_BY_DEFAULT setting flag is not persistent
API Changes:
-
Added:
project
frame duration functions:-
P.get_frame_duration(int i) -> float
-
P.get_frame_durations() -> float[]
-
P.set_frame_duration(int i, float frame_duration);
-
-
Changed:
- Separated selection from scope in color actions
- Modified
scope
enumeration:0: PROJECT 1: LAYER 2: FRAME 3: LAYER_FRAME
- Changed
project
color action function signatures:-
P.palettize(palette pal, int scope, bool include_disabled, bool ignore_selection);
-
P.extract_to_pal(palette pal, int scope, bool include_disabled, bool ignore_selection);
-
P.hsv_shift(int scope, bool include_disabled, bool ignore_selection, int h_shift, N s_shift, N v_shift);
-
P.color_script(int scope, bool include_disabled, bool ignore_selection, string script_path);
-
- Modified
- Separated selection from scope in color actions
Stipple Effect v0.4.2
Full Changelog: v0.4.1...v0.4.2
Update Summary
Added:
- Color scripts that encounter errors now display their errors
Changed:
- Color action previews (HSV level shift, color script execution) now show transparency checkerboard behind previewed image
API Changes:
Note: This update completely redesigned the API and altered the syntax of every API function. Scripts that utilize API functions that were written for versions 0.4.0 or 0.4.1 will need to be rewritten in order to execute on subsequent versions of Stipple Effect.
- Added:
palette
type- Global namespace
$SE
project
color action functions: (#87)-
P.palettize(palette pal, int scope, bool include_disabled);
-
P.extract_to_pal(palette pal, int scope, bool include_disabled);
-
P.hsv_shift(int scope, bool include_disabled, int h_shift, float s_shift, float v_shift);
-
P.color_script(int scope, bool include_disabled, string script_path);
-
- Changed:
- Renamed
set_frame_content
toset_frame
- Renamed
get_frame_content
toget_frame
- Renamed
Stipple Effect v0.4.1
Full Changelog: v0.4.0...v0.4.1
Patch
Changed:
- Running Stipple Effect on Windows will now read and write settings from %appdata%.
Stipple Effect v0.4.0
The Scripting Update
Read the blog post here!
Full Changelog: v0.3.0...v0.4.0
Update Summary
Added:
- Added scripting (#34, #60, #64, #70, #71, #72, #73, #78)
- Added HSV level shifting (#46)
- Added "Flatten project" layer action (#77)
- Added themes (#62, #80)
- Added "Zo" theme inspired by Haiti
- Added "Neon" theme
- Added "Bunkering" theme inspired by the environmental degradation the Niger Delta
- Added transparency checkerboard to the color slider core
- Dialog menus can now be closed by pressing {Enter} if the precondition is passing (#56)
- Added settings for windowed program size
- Added flag to include or exclude disabled layers in color actions (#55)
Changed:
- Overhauled outlines (#76, #79)
- Outlines can now be internal as well as external and up to 10 pixels thick
- Redesigned outlines dialog menu
- Optimization: "Project" menu elements are no longer redrawn after the canvas is edited (#81)
Fixed:
- Bug: The dynamic label showing an example file name for the prefix and suffix doesn't update
- Bug: Lowest menu elements were clipped on the default settings page (#50)
- Bug: Not redrawing menus after a panel is shown/hidden in the panel manager dialog
- Bug: Setting pixel grid and checkerboard via shortcut (Ctrl + B) is resetting window size and theme (#61)