Author Topic: REXPaint (now at v1.0!)  (Read 18379 times)


  • 7DRL Reviewer
  • Rogueliker
  • *
  • Posts: 503
  • Karma: +0/-0
    • View Profile
    • Grid Sage Games
    • Email
Re: REXPaint (now at beta v0.97R7)
« Reply #15 on: November 13, 2015, 04:14:23 PM »

REXPaint is a pretty mature tool now, and a ton of people are using it, so it's about time it got its own home on

I've retired the old blog and REXPaint now officially belongs to the world of Grid Sage Games. Updates will continue when I have the time, and in fact the move to a new website is part of preparation for the symbolic "1.0," to come soon.

The new site's content is similar to the original blog, but prettier, easier to navigate, and comes with some extras.

On the main page you can see a recording I made while mutating my old organic mainframe piece to show off some of REXPaint's features:


  • 7DRL Reviewer
  • Rogueliker
  • *
  • Posts: 503
  • Karma: +0/-0
    • View Profile
    • Grid Sage Games
    • Email
Re: REXPaint (now at beta v0.97R7)
« Reply #16 on: December 22, 2015, 03:35:27 AM »
After more than two years since its inception, REXPaint has finally reached 1.0 :D

More fonts, cellwise HSV tweaking, layer locking, options menu, and more!

Full release notes and demo images can be found on the dev blog here.

The full REXPaint 1.00 (151220) changelog:

* NEW: Added more CP437 fonts (greater range of image zoom/scale options): 14x14, 18x18, 20x20
* NEW: Cellwise HSV color shifting of both foreground and background (interval controlled in options)
* NEW: Info window shows palette/art foreground/background color values under cursor, either RGB or HSV (toggle with 'q')
* NEW: Rect/Copy tools can show area dimensions directly on the canvas (toggle via "RDim" button, or Ctrl-d)
* NEW: Lock individual layers to prevent accidental modification ("Lck" button, or Shift-1~4)
* NEW: Hold Alt while cursor hovering over a palette color to highlight all uses in image (akin to glyph highlighting feature)
* NEW: Options menu (the 'O' button at the bottom, or F2)
* NEW: Program settings changed while running are saved/remembered for next time, without requiring cfg modifications
* NEW: Exiting while image(s) have unsaved changes requires confirmation (can be disabled in options)
* NEW: Reset image location to top-left corner via Enter (centering switched to Ctrl-Enter)
* NEW: Ctrl-RMB copies the uppermost visible cell at that position in a multi-layered image (working w/reference layers, etc.)
* NEW: Premade Arne32/Arne64 palettes available from the website resources page
* MOD: Enhanced 16x16 CP437 font's relative proportionality with other fonts
* MOD: Image dimension limits increased from 999x999 to 2500x2500
* MOD: Removed Undo/Redo buttons to save space (use ctrl-z/y instead)
* MOD: Autosaving now inactive by default (must set desired interval value in options)
* MOD: Layer delete button changed from "Del" to "X"
* MOD: Palette/color swaps only operate on unhidden layers
* MOD: Changes to layer hide/unhide/active states no longer count towards the unsaved progress indicator
* MOD: Different cfg format, now that options are available from within REXPaint itself
* MOD: Change skin keyboard command switched from F2 to F3 (also now accessible directly from options menu)
* MOD: License in README file more explicit about commercial use of images
* MOD: Removed backwards compatibility with pre-R9 .xp images (2013 format), which were converted by 0.99r9 build (2014)
* FIX: One mixed-line glyph in the square 10x10 CP437 font was 1 pixel off
* FIX: Reversed NW/SE directional canvas scrolling via numpad
* FIX: Using the mouse to select a value box in the color picker required an extra key press before detecting input
* FIX: Creating a new image copied the view offset of the image currently open, rather than resetting it to (0,0)
* FIX: Image browser couldn't collapse subdirectories at a depth of three or greater
* FIX: Copy-paste of lone transparent cell on layer 2+ crashed editor (Note: RMB-copy faster for this purpose, anyway!)
* FIX: Cellwise drawing off edge of image without releasing LMB damaged undo history, which could crash if accessed
* FIX: Could attempt to draw multi-cell objects to parts of a large image shifted under the tools area, leading to UI issues
* FIX: Typing a grave character at the end of a text entry would crash the font renderer
* FIX: Crash on running without an enabled audio device (now no such device required)


  • 7DRL Reviewer
  • Rogueliker
  • *
  • Posts: 503
  • Karma: +0/-0
    • View Profile
    • Grid Sage Games
    • Email
Re: REXPaint (now at v1.0!)
« Reply #17 on: May 02, 2016, 05:08:32 AM »
A bunch of other devs have been making cool stuff with REXPaint, so I took a day after releasing the latest Cogmind Alpha to throw in a few of the easier features on the TODO list (sorry, the tough stuff will have to wait until Cogmind is done!).

The full REXPaint 1.02 (160502) changelog:

* NEW: Image shifting with wrapping (Ctrl-Arrow/Numpad or Ctrl-Shift-Arrow/Numpad for single layer)
* NEW: TXT file importing (conversion to .xp format) supported via command line (see manual Appendix F)
* NEW: Partial PNG image importing (conversion to .xp format) supported via command line (see manual Appendix G)
* NEW: Fill tool includes second mode for 8-directional search
* NEW: Unlimited font size regardless of resolution limits--NOT ideal usage, implemented by request (see "unlimitedFontSize" in cfg)
* FIX: One line junction glyph in the 8x8 CP437 font misaligned

Some of the new features in action:

An imported txt file.

Shifting an image, with content wrapping to the other side.

I also included this experimental tool I was playing with earlier this year, though I wonder if anyone else will actually get any use out of it :P...

Importing a .png screenshot from ADOM into an editable .xp format.

Another from Brogue.

Also, if you haven't seen it before, the gallery is now filled with impressive work :)


  • 7DRL Reviewer
  • Rogueliker
  • *
  • Posts: 503
  • Karma: +0/-0
    • View Profile
    • Grid Sage Games
    • Email
Re: REXPaint (now at v1.0!)
« Reply #18 on: June 20, 2018, 12:39:13 AM »
REXPaint v1.04 is released!

  • NEW: Selected glyph's ID shown in Apply box, along with the glyph itself (activate in options menu)
  • NEW: ID for glyph currently under cursor in selection box can be shown directly to the right (activate in options menu)
  • NEW: Swap foreground/background colors across entire image (Shift-Alt-w)
  • NEW: Copy entire active layer to clipboard (Ctrl-Shift-c)
  • NEW: Arrow keys for glyph selection now wrap around to opposite side
  • NEW: Undo/Redo functionality also accessible via simply z/y as hotkeys (ctrl optional)
  • NEW: Limit application of specific RGB channels in foreground and/or background (Shift-Alt-r/g/b and Ctrl-Shift-Alt-r/g/b)
  • NEW: File browser can be set to ignore specified paths ("ignorePath" in cfg)
  • NEW: Option to use basic CP437 characters instead of UTF8 for txt output ("txtOutputUTF8" in cfg)
  • NEW: Can now override the normal autodetection for font bitmap color keying ("fontKeyColorOverride" in cfg)
  • NEW: F2 hotkey opens rename dialogue for currently selected image in browse mode
  • NEW: Better input support for very long filenames
  • NEW: Currently selected filename in browse mode also expanded to full length if longer than available width (not only on mouse hover)
  • NEW: PNG importing now assumes direct pixel-to-cell conversion if no cell dimensions appended to filename (see manual Appendix G)
  • NEW: Manual's .xp specification explicitly states that the 32-bit character is stored as little-endian
  • NEW: Checks for newer version on startup to show a notification (toggleable in options)
  • MOD: Brought back Undo/Redo buttons
  • MOD: Locking a layer no longer prevents the copy tool from being used on it
  • MOD: Hotkeys for switching between HSV color shifting modes now require Ctrl modifier
  • MOD: Options hotkey changed to F3
  • MOD: Cycle GUI skin hotkey changed to F4
  • MOD: "Base Image Path" and "Exports to Base" removed from options menu (still available in REXPaint.cfg)
  • FIX: Crash if moving caret too far before visible section of filename dialogue box when filename length exceeded box's width
  • FIX: Crash when using fill tool on very large and open images
  • FIX: Foreground colors on a non-black background color output to PNG would have their RGB values changed by +1 for any channel the background color used
  • FIX: Browse mode hotkeys for toggling all folders would simultaneously shift-wrap currently open image
  • FIX: 14x14 CP437 character 147 slightly misaligned (extra pixels)
For feature demos and other info see the main release announcement on the forums.

REXPaint is now also available on :D


  • 7DRL Reviewer
  • Rogueliker
  • *
  • Posts: 503
  • Karma: +0/-0
    • View Profile
    • Grid Sage Games
    • Email
Re: REXPaint (now at v1.0!)
« Reply #19 on: August 03, 2020, 02:47:35 AM »
Just released v1.50 :)

REXPaint 1.50 (200803) changelog:

  • NEW: Support for more than 256 glyphs in a single font (scroll with wheel or PgUp/Dn)
  • NEW: Adjustable wheel-based extended glyph scrolling ("glyphScrollRowCount" in cfg)
  • NEW: Manual provides additional information about extended custom fonts and tilesets
  • NEW: Multi-layer support for Copy/Cut/Paste tools, use 'd' and Shift-d to adjust the desired operational depth
  • NEW: Full layer copy (Ctrl-Shift-c) obeys current multi-layer copy depth setting as well
  • NEW: Cycle images while in Paint mode using Ctrl-Up/Down
  • NEW: Reload all image files via Ctrl-Shift-r or the Browse window's "R" button
  • NEW: Batch export of all .xp images to PNGs supported via command line (see manual Appendix H)
  • NEW: Export to format used for art in Cataclysm: Dark Days Ahead (Ctrl-j) (see manual Appendix I for more info)
  • NEW: Toggle transparent cell visibility with 'n' (only shows current layer)
  • NEW: Switch between two different preset transparency visualization color schemes (editable in skins.xt) (hotkey Shift-Alt-n)
  • NEW: Manual explicitly states that alternative paste modes affect the results of any copy action
  • NEW: Manual explicitly states that custom fonts always treat index 32 as a space, regardless of what the bitmap contains there
  • MOD: Font config for custom fonts requires specifying the number of columns and rows present in each bitmap font
  • MOD: Options menu Default Image Background (applies to new images, expansions from resize, layer 1 areas) now defaults to transparent instead of black
  • MOD: Holding Alt while cursor hovering over font glyph highlights matching glyphs across a layer using a different style rather than simply flashing them
  • MOD: "Shift all layers in indicated direction" hotkey changed to Shift-Arrow/Numpad
  • MOD: Color Shift Mode hotkey changed from Ctrl-h/s/v to Shift-h/s/v
  • MOD: Keyboard's Pause key no longer has an effect
  • FIX: Canvas-sized image created on opening also obeys Default Image Background setting
  • FIX: Version check functionality restored after an unexpected server change broke the previous connection system
  • FIX: Using separate fonts for GUI and art was not compatible with the new selected glyph preview in the Apply box
  • FIX: Optional glyph hover ID display was off by one
Feature demos and some release notes can be found via the main release announcement on the forums. Also on


  • 7DRL Reviewer
  • Rogueliker
  • *
  • Posts: 503
  • Karma: +0/-0
    • View Profile
    • Grid Sage Games
    • Email
Re: REXPaint (now at v1.0!)
« Reply #20 on: January 10, 2024, 04:55:14 AM »
Progress on Cogmind has recently led to numerous engine improvements (and a few bug fixes), so combined with feature request patches from the past few years we're getting an official release for the new and improved REXPaint!

Big items this time around include autoscaling of font bitmaps, .gpl (GIMP) palette support, and even better .ans (ANSI art) support--for the first time REXPaint can automatically import a format other than its own!

First, the full changelog...

REXPaint 1.70 (240110) changelog:
  • NEW: Support for automated upscaling of font bitmaps (see manual under Custom and Extended Fonts)
  • NEW: .ans file automated importing and conversion (ANSI art)
  • NEW: .gpl (GIMP) palette support
  • NEW: Ctrl-v during active file naming dialog or Text tool pastes text from system clipboard (single line only)
  • NEW: Reopening REXPaint recalls the last glyph index and brush foreground/background color in use
  • NEW: Remap all layer colors to closest from current palette (Shift-Alt-p, or Ctrl-Shift-Alt-p for all unlocked layers)
  • NEW: Added full list of valid color names to skins.xt file for reference
  • NEW: Command line support for creating new image files (see manual Appendix H)
  • NEW: Command line support for opening REXPaint with specific image selected (see manual Appendix H)
  • NEW: Command line support for exporting specific image as PNG (see manual Appendix H)
  • MOD: .ans export format optimized for reduced file size
  • MOD: C:DDA image exports now also reference custom Unicode glyph assignments in cases where users may want a custom font layout besides CP437
  • MOD: Updated installation instructions with new MSVC DLL download location
  • MOD: Manual Appendix H rewritten to encompass multiple types of command line options
  • MOD: Manual Appendix I changes official C:DDA font reference to reflect switch from Unifont to Terminus, provided on website Resources page
  • FIX: Reloading all images via Browse window blocked further mouse interaction with some popups like Resize window
  • FIX: Potential rare crash due to multithreaded logging
You can download REXPaint here, and note that as of 1.04 it's also available on

.ANS Importing!

While REXPaint has had .ans exporting for many years and could therefore be used to create traditional ANSI art, only art created from scratch using REXPaint's native format could be used to do this. Now .ans files can be imported as well!

Simply drop any .ans files into the /images/ directory structure, and on startup if REXPaint does not see any corresponding .xp files by the same name, it will automatically convert them for editing access. Although REXPaint only edits .xp files directly, you can re-export to .ans at any time. Original .ans files remain unchanged unless you choose to overwrite one with an export.

REXPaint will import and view .ans files even when ANSI mode is not active, though properly exporting to .ans again would require that mode to be active as usual. (Note: REXPaint strips SAUCE metadata when it converts .ans to .xp, and therefore does not contain any on export, either.)

Animated .ans files are beyond the scope of REXPaint and ignored--only static ANSI art is compatible.

Here is a demo of .ans conversion:

We've had text and image file importing for a while, but those are more fiddly, while this automated feature was a much bigger production. I spent a while researching the format in order to enable imports, and as a result was also able to optimize REXPaint's .ans exports to reduce the resulting file size.

(Note that one of these optimizations involves giving "cursor" instructions to skip over empty space, but if you're intending to use REXPaint's .ans exports with Discord's ```ansi feature, know that Discord's implementation of ANSI is pretty terrible and incomplete so you'll probably have to set the new ansOutputNoCursorShift cfg option to make images containing that sort of empty space compatible over there.)

Some other new features in action

Import .gpl (GIMP) palettes, for example from here, by dropping them into the data/palettes directory:

Have a tiny font that you want to increase by a whole number scaling factor? No longer do you have to manually create a separate set of bitmaps for it! Just add a new line in the font configuration file and let REXPaint do the rest:

The system clipboard can now be used to copy-paste text from another program into REXPaint's text entry tool (although this currently only supports a single line of text):

The UI will recall the glyph and colors in use when last closed, if possible:

Over a decade since the first release and REXPaint is still going :)

I've still got lots more planned, including huge features, but, you know, when I get to it :P