gnustep-dev
[Top][All Lists]
Advanced

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

Re: Painter Fuzzy Node in github


From: David Chisnall
Subject: Re: Painter Fuzzy Node in github
Date: Mon, 15 Dec 2014 17:19:37 +0000

Hi Johan,

I still don't understand where this ties into Opal, which is an implementation 
of the CoreGraphics APIs.  Which CoreGraphics APIs require this functionality 
to implement them?  CoreGraphics is an immediate mode API - it doesn't provide 
any kind of scene graph.  Scene graphs are built on top using CoreAnimation 
layers (or Cocoa Views).  I'm still not sure where these fit into Opal.  I'd 
also recommend that you read the OpenStep or Cocoa API naming conventions, as 
your method names are highly problematic (e.g. get methods that don't take a 
pointer) and you're writing very large amounts of code that could be trivially 
replaced with a fraction of the amount (and with significantly less overhead - 
creating a class is not free, each one will use at least 4KB of RAM in the 
runtime and you're creating a load of classes that just differ by a function 
that could easily be a block [or even function pointer] ivar).

Please slow down, take a step back, work out:

- What you are trying to do.
- How, if at all, it fits in with GNUstep.
- What the best way of implementing it is.

David

On 15 Dec 2014, at 16:57, Johan Ceuppens <address@hidden> wrote:

> Hi,
> 
> I have some time now to answer, but please look at the code as it is more 
> clear;
> 
> 2014-12-15 14:08 GMT+01:00 David Chisnall <address@hidden>:
> Hi Johan,
> 
> It would really help if you could post a high-level overview of what you're 
> trying to do. 
> 
> The only thing the code provides is a distributed fuzzy network which alters 
> the screen according to rules made out of text, which humans can understand 
> and write rules in.
> 
> As an example I take the SVG graphics format. You paint subelements eg. in 
> the Inkscape software (http://inkscape.org) you click on subelements to alter 
> them. This is how a fuzzy network (a greedy decision tree algorithm) alters 
> the screen you look at. You ask the paint node to eg. "paint extremely fast" 
> or "paint not" and so on. The painting parser using fuzzy rules based on 
> "extremely", "not", "indeed" among other things and performs @selectors to 
> paint algorithms such as paintOn:(SomeCanvasOrPaintSystem*)canvas.
> 
> By delegating adapters (wrappers) to the (paint for now) rulesystem, (paint) 
> canvas and (paint) fuzzy parser you alter the system i.e. you have an 
> interface to the thing itself.
>  
> Opal is an implementation of the CoreGraphics APIs from OS X and, although 
> it's written in Objective-C, exposes purely C interfaces.
> 
> My code is written in objc, it can be called from C or interfaced to C later 
> on, if you like.
> 
> The file OpalFuzzyPaintRules.m is the C interface now of a (distributed) 
> fuzzy node for painting, as an example:
> //start of code
> void makePaintRules(OpalFuzzyPaintRuleSystem* sys)
> {
>         [sys addRule:"paint extremely" : paintOn:];
>         OpalFuzzyFunction *f = [OpalFuzzyFunctionExtremely new];
>         [f x:.0];
>         [sys addFunction:"paint extremely" : f];
> 
>         [sys addRule:"paint not for 1 second" : paintIdle1SecondOn:];
>         f = [OpalFuzzyFunctionIdle new];
>         [f x:.0];
>         [sys addFunction:"paint not for 1 second" : f];
> }
> //end of code
> 
>   I'm not sure how any of the things that you've written about apply to it.
> 
> 
> There's a second patch at 
> https://github.com/enrytheermit/gnustep/tree/master/gnustep-back/patches 
> named patch-p0-gnustep-back-enry-12152014-2.patch with evrything in I said 
> above. See the 00_INDEX.txt file in the github repo for more information.
>  
> `Enry


-- Sent from my STANTEC-ZEBRA




reply via email to

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