[MacRuby-devel] NSPoint and CGPoint issue
david kramf
dakr.012 at gmail.com
Thu Dec 13 03:58:10 PST 2012
Hi Braxton
Cocoa seems to be a bit schizophrenic when handling NSPoint and CGPoint. I tried your advice and that what I got. Certainly one should be careful dealing with these classes !!
Thanks, David
puts "width is #{width} heght is #{height}"
origin = NSPointFromCGPoint(NSMakePoint(width,height))
puts "class of origin is #{origin.class} "
width is 160.5 heght is 184.0
class of origin is CGPoint (!!!!)
puts
On Dec 10, 2012, at 11:35 AM, Braxton Sherouse wrote:
> 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
>>
> _______________________________________________
> 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/20121213/399bc150/attachment-0001.html>
More information about the MacRuby-devel
mailing list