[MacRuby-devel] Quartz 2D Graphics problem

Robert Carl Rice rice.audio at pobox.com
Wed Oct 24 20:06:33 PDT 2012


Hi,

I have my app working again after converting my Quartz2D drawing to ObjC. Not as difficult as I had anticipated and now I've learned some ObjC.

So now some of my classes have three files with extensions .h, .m and .rb. It's easy to reference the ObjC property accessor methods from MacRuby.

Thanks for the help,
Bob Rice


On Oct 21, 2012, at 3:28 PM, Colin Thomas-Arnold <colinta at gmail.com> wrote:

> yup, you can't mix and match within one file.
> 
> 
> @colinta
> colinta.com
> github.com/colinta
> 
> 
> 
> 
> On Oct 21, 2012, at 1:22 PM, Robert Carl Rice wrote:
> 
>> Hi,
>> 
>> Actually, I already have PBSerialPort m & h files by Paolo Bosetti dropped into my project and it works fine. I was wondering is a class could have both Objective C and Ruby code but from this discussion I gather the class must be either MacRuby or ObjC. Is this correct?
>> 
>> Thanks,
>> Bob Rice
>> 
>> 
>> On Oct 21, 2012, at 2:40 PM, Jim Getzen <jim at getzen.name> wrote:
>> 
>>> You don't need to make a framework or bundle to add Obj-C code to your project. I've been able to just add a .h/.m files directly to the project and call the Obj-C classes contained therein from my MacRuby code, just as if those classes were part of a framework.
>>> 
>>> What you can't do, of course, is call straight C functions or constants without a bridgesupport file.
>>> 
>>> Jim
>>> 
>>> 
>>> On Oct 21, 2012, at 12:59 PM, Mark Rada <mrada at marketcircle.com> wrote:
>>> 
>>> Adding some Objective-C code could be done with a framework as suggested, or by creating a bundle. The bundle process is essentially the same as creating a C extension for Ruby. Any MacRuby project with a C extension could be used as an example:
>>> 
>>> https://github.com/pieter/macruby-bundle-example
>>> https://github.com/Marketcircle/AXElements/tree/master/ext/accessibility/key_coder
>>> https://github.com/alloy/ObjectiveBacon/tree/master/LanguageBindings/MacRuby/ext
>>> 
>>> You can then simply "require 'bundle'" the bundle file that is compiled.
>>> 
>>> 
>>> On 2012-10-21, at 12:44 PM, Colin Thomas-Arnold <colinta at gmail.com> wrote:
>>> 
>>>> You can certainly compile a group of stuff as a framework, and add that framework to your project, but I've never tried to just toss in .h/.m files and access them from macruby.
>>>> 
>>>> Can anyone touch on that?  I'm interested to hear what can be done there...
>>>> 
>>>> 
>>>> AFA translating your code into Obj-C...
>>>> 
>>>> 
>>>> Here's the short version:
>>>> 
>>>> self.context = [[NSGraphics currentContext] graphicsPort];
>>>> 
>>>> 
>>>> 
>>>> And here's the long version!
>>>> 
>>>> 
>>>> // the header file, YourClass.h
>>>> 
>>>> @interface YourClass : ParentClass
>>>> 
>>>> @property (assign, nonatomic) CGContextRef context;
>>>> // or void* instead of CGContextRef, but graphicsPort returns a CGContextRef
>>>> 
>>>> @end
>>>> 
>>>> 
>>>> 
>>>> // the implementation file, YourClass.m
>>>> 
>>>> #import "YourClass.h"
>>>> 
>>>> @implementation YourClass
>>>> 
>>>> @synthesize context;
>>>> 
>>>> - drawRect:(CGRect)rect
>>>> {
>>>>   self.context = [[NSGraphics currentContext] graphicsPort];
>>>> }
>>>> 
>>>> @end
>>>> 
>>>> 
>>>> 
>>>> 
>>>> @colinta
>>>> colinta.com
>>>> github.com/colinta
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On Oct 21, 2012, at 10:19 AM, Robert Carl Rice wrote:
>>>> 
>>>>> Hi Mark,
>>>>> 
>>>>> Unfortunately, I am not very familiar with objective C syntax. Is it easy to mix objective C statements with MacRuby?
>>>>> For example, How would code the @context = NSGraphicsContext.currentContext.graphicsPort in objective C?
>>>>> 
>>>>> Thanks,
>>>>> Bob Rice
>>>> 
>>>> _______________________________________________
>>>> MacRuby-devel mailing list
>>>> MacRuby-devel at lists.macosforge.org
>>>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>>> 
>>> _______________________________________________
>>> MacRuby-devel mailing list
>>> MacRuby-devel at lists.macosforge.org
>>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>>> 
>>> _______________________________________________
>>> MacRuby-devel mailing list
>>> MacRuby-devel at lists.macosforge.org
>>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
>> 
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo/macruby-devel
> 
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo/macruby-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20121024/f411089a/attachment.html>


More information about the MacRuby-devel mailing list