[MacRuby-devel] NSPoint and CGPoint issue

Braxton Sherouse sherouse at email.virginia.edu
Mon Dec 10 01:35:11 PST 2012


I can't speak to the encoding issues, but I can attest to crashing
issues with incorrectly assuming the compatibility of NSPoint and
CGPoint.

It depends what version of Mac OS you're on whether NSPoint can safely
be cast as a CGPoint. In older versions of Mac OS, NSPoint used float
for its members (32-bit) -- later, it switched to CGFloat (64-bit).


There are functions in the Foundation framework that you can use, if
you want to be safe: NSPointFromCGPoint and NSPointToCGPoint:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSPointFromCGPoint


Also, check out the documentation here, on NSPoint, which gives the
version history:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html#//apple_ref/doc/uid/TP40003794

Best,
-braxton

On Mon, Dec 10, 2012 at 9:11 AM, Min Soo Kim <minsookim at mac.com> wrote:
> Hi David,
>
> I ran the following
>
> framework 'cocoa'
> def  initLabel(h)
>        @label = NSTextField.alloc.initWithFrame(CGRectMake(0,0,250, 45))
>        @label.setStringValue(h)
>        @label.drawsBackground = false
>        @label.bezeled = false
>        @label.font = NSFont.fontWithName("Arial", size:45.0)
>        @label.editable = false
>        puts "class of label is #{@label.class}"
>        # width =
> (@window.contentView.frameSize.width/2.0)-(@label.frameSize.width/2.0)
>        # height =
> (@window.contentView.frameSize.height/2.0)-(@label.frameSize.height/2.0)
>        width=100.0
>        height=200.0
>        puts "width is #{width} heght is #{height}"
>        origin = NSMakePoint(width,height)
>        puts "class of origin is #{origin.class}"
>        @label.setFrameOrigin(origin)
>        puts @label.frame.origin
> end
>
> initLabel("Hello")
>
>
> I got the following output.
>
> class of label is NSTextField
> width is 100.0 heght is 200.0
> class of origin is CGPoint
> #<CGPoint:0x40013a340>class of origin is CGPoint
> #<CGPoint:0x40013a340>
>
> It seem be to working for me. I think NSPoint and CGPoint can be mix used.
> (Free ride)
> I think the problem is in the `￯﾿ᄐ￯﾿ᄐ' whatever that is
>
> Min Soo Kim
>
> On Dec 10, 2012, at 3:37 PM, david kramf wrote:
>
> Hi Min,
> This error message was produced by run environment and not by my code. I
> don't do (knowingly ) anything with encoded text. Usually I get
> comprehendible error messages when my code crashes.
> Thanks, David
>
> On Dec 10, 2012, at 2:10 AM, Min Soo Kim wrote:
>
> Hello David,
>
> In your error message it says
>
> undefined method `￯﾿ᄐ￯﾿ᄐ'
>
>
> Why are you getting `￯﾿ᄐ￯﾿ᄐ' instead of 'setFrameOrigin'?
> Do you have some foreign encoded text somewhere?
>
> Min Soo Kim
>
>
> On Dec 10, 2012, at 1:41 AM, david kramf wrote:
>
> Hello,
> I am trying to create an NSPoint object so I can call setFrameOrigin but I
> get in response a CGPoint object . When I pass the CGPoint to setFrameOrigin
> , it crashes. How do I make NSMakePoint making an NSPoint object and not a
> CGPoint object.
> Thank you for  your help,
> David Kramf
>
>  def  initLabel(h)
>         @label = NSTextField.alloc.initWithFrame(CGRectMake(0,0,250, 45))
>         @label.setStringValue(h)
>         @label.drawsBackground = false
>         @label.bezeled = false
>         @label.font = NSFont.fontWithName("Arial", size:45.0)
>         @label.editable = false
>         puts "class of label is #{@label.class}"
>         width =
> (@window.contentView.frameSize.width/2.0)-(@label.frameSize.width/2.0)
>         height =
> (@window.contentView.frameSize.height/2.0)-(@label.frameSize.height/2.0)
>         puts "width is #{width} heght is #{height}"
>         origin = NSMakePoint(width,height)
>         puts "class of origin is #{origin.class}"
>         @label.setFrameOrigin(origin)
>     end
>
> class of label is NSTextField
> width is 75.0 heght is 77.5
> class of origin is CGPoint
> 2012-12-09 18:33:13.525 two[3836:503]
> /Users/davidkramf/Library/Developer/Xcode/DerivedData/two-gdovgltwrnzjfbfpizcbgrudvizf/Build/Products/Debug/two.app/Contents/Resources/MyController.rb:34:in
> `initLabel': undefined method `￯﾿ᄐ￯﾿ᄐ' for
> #<MyController:0x4011a6080> (NoMethodError)
> from
> /Users/davidkramf/Library/Developer/Xcode/DerivedData/two-gdovgltwrnzjfbfpizcbgrudvizf/Build/Products/Debug/two.app/Contents/Resources/MyController.rb:15:in
> `initialize'
> from /Users/davidkramf/Library/Developer
> _______________________________________________
> 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
>


More information about the MacRuby-devel mailing list