discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ANN: PikoPixel pixel-art editor


From: Josh Freeman
Subject: Re: ANN: PikoPixel pixel-art editor
Date: Mon, 12 Oct 2015 06:15:41 -0400

Hi David,

Thanks for the info! Hadn't seen this issue on the Debian-distros I tested - on those, the +load methods are called in the same order as the source-file listing in the GNUmakefile (all the PPGNUstepGlue* files are at the end of the list, after the file that defines ppPerformSelectorFromNewStackFrame:).

An updated version of the PikoPixel sources is now available on the website: 1.0 BETA5+2015-10-12

Changes include:

- Removed all object messaging from +load methods, which should hopefully fix the segfault you're seeing and also prevent static- linking issues

- Fewer patches, thanks to recent fixes in the GNUstep trunk by Fred Kiefer and Richard Frith-Macdonald

- Requires a newer version of the GNUstep development environment: Oct. 11, 2015 or later

- Now builds & runs with the GCC runtime (so far, only tested with GCC 4.9)


The download link for the sources is at the bottom of the webpage (not the green "Download" arrow, which downloads the Mac binary):
http://twilightedge.com/mac/pikopixel/

  Please let me know if the update fixes your startup issue.

Thanks,

Josh



On Oct 10, 2015, at 6:10 AM, David Chisnall wrote:

Having now tried testing PikoPixel, I discover that it segfaults on startup. It turns out that this is because it relies on undefined behaviour, which may or may not work depending on linker behaviour.

1. The PPGNUstepGlue_TitleablePopUpButton category on NSObject has a +load method

2. This method calls ppPerformSelectorFromNewStackFrame.

3. The ppPerformSelectorFromNewStackFrame method is added in the PPUtilities category on NSObject

4. The order in which these categories will be loaded is undefined behaviour.

5. If the second category is applied after the first, then we die with an invalid method exception.

The slightly ironic thing is that the ppPerformSelectorFromNewStackFrame method itself seems to be intended as a work-around for this precise ordering issue (it allows the method swizzling to happen after all of the categories have loaded).

The fix would be simple: Turn ppPerformSelectorFromNewStackFrame into a function that takes an explicit NSObject parameter.

There are some other things that are potential issues (e.g. using NSArray from +load in a category on NSObject), but they’re likely to only show up in static linking.

David

On 23 Sep 2015, at 06:54, Josh Freeman <gnustep_lists@twilightedge.com > wrote:

Hi Xavier,

Thanks for your interest in PikoPixel! Hope your installation went OK and your nephews enjoyed using it!

Unfortunately, the full documentation still isn't written, so I don't have a list of the complete set of features. Most of the important ones were shown in the video (https://www.youtube.com/watch?v=K3KYYLK0ZC0 ), and almost all of the rest can be found through the main menu & submenus.

One of the more useful and unique features are the popup panels (shown in the video at 2:08): By pressing an easy-to-reach hotkey along the lower corners of the keyboard (on either side, to accommodate right- and left-handed users), a popup panel that controls tools, colors, layer controls, or navigation appears under the current mouse location. This speeds up the drawing process because the user doesn't have to spend time navigating the mouse to an external panel off the side of the document window (& then back).

For best results with popup panels, I recommend setting the correct keyboard language-locale in PikoPixel's hotkey settings (on Mac, it's set automatically, but on GNUstep, it has to be done manually - this is a Cocoa limitation, not a GS one, as there's no Cocoa API for reading the keyboard locale; the Mac version accesses it using the Carbon framework): From the main menu, select Info > Hotkey Settings, and choose your keyboard's locale from the popup menu in the bottom left of the Hotkey Settings window, then click the "Load Defaults For:" button immediately to its left, & click "OK" to save. (This is due to the different key layouts in different locales - for example, on US-locale keyboards, the keys at the lower left are Z, X, C; on French-locale keyboards, the keys are W, X, C - there's also further differences in French-Canadian & French- Swiss locales).

One of the interesting features not shown in the video is the "Blink Layers" hotkey ('B' on most keyboard locales): When you hold down the hotkey, it temporarily hides your image, displaying only the canvas background. This is useful when tracing a higher- resolution photo (you can set a photo to be the canvas background in 'Background Settings', found in the 'Canvas' menu), because quickly switching in-place between your drawing & the reference photo makes it easy to find the parts where your drawing doesn't quite match. Here are some photo-tracings made with PikoPixel (Mac) that used this technique: https://instagram.com/pikopixeleditor/ (the blurry tv-scanlines effect was from post-processing in another image-editor)

Regarding similar software, there's several pixel-art editors listed here: http://www.slant.co/topics/1547/~what-are-the-best-pixel-art-sprite- editors

I wrote PikoPixel because it was the pixel-art editor I wanted to use, and hopefully it's something others find useful too. Thanks to the GNUstep frameworks and everyone who's volunteered their time working on them, PP can reach a wider audience beyond Mac; I hope your article can also discuss GNUstep, because my Mac pixel-editor now compiles & runs on a $40 Raspberry Pi 2, which is quite amazing!

Please let me know if you have other questions. (And I'd be happy to take this off-list if this was too off-topic for discuss-gnustep).

Cheers,

Josh


On Sep 20, 2015, at 3:24 PM, Xavier Brochard wrote:

Hi

Thank you for this software!
Your demo video is so good and convincing that my two nephew (10 years
old) asked me to install it !

I would like to write a short paper about PikoPixel on linuxfr.org
(slashdot for french speaking people). Do you have a list of features or should I extract it from the video ? Do you know a similar software ?
What were your motivations for writing it ?

Xavier Brochard

Le Fri, 18 Sep 2015 15:57:08 -0400,
Josh Freeman <gnustep_lists@twilightedge.com> a écrit :

PikoPixel is a free Mac OS X pixel-art editor that's currently
in beta for its initial 1.0 release.

The latest beta version, 1.0 BETA5, is the first source-code
release (AGPL v3), and the first version that also runs on GNUstep.

PikoPixel GNUstep binaries aren't available yet (haven't gotten
around to figuring out GS standalone application packaging), so for
the moment, PikoPixel must be built from source.

Requirements for compiling PikoPixel are a recent version of the
GNUstep development environment (June 2015 or later) and the
libobjc2 runtime. Also, PP's only been tested so far under Clang, and
on Debian- based Linux distros (Ubuntu & Mint), so there may be
issues with other configurations.

PikoPixel's source code archive is linked at the bottom of the
webpage (not the green "Download" arrow, which downloads the
Mac-only binary):
http://twilightedge.com/mac/pikopixel/

Please send questions, comments, or issues to pikopixel (at)
twilightedge (dot) com.

Cheers,

Josh Freeman
Twilight Edge Software
http://twilightedge.com



_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustep@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

--
This email complies with ISO 3103






reply via email to

[Prev in Thread] Current Thread [Next in Thread]