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: David Chisnall
Subject: Re: ANN: PikoPixel pixel-art editor
Date: Sat, 10 Oct 2015 11:10:06 +0100

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]