[MacRuby-devel] NSPoint and CGPoint issue

david kramf dakr.012 at gmail.com
Mon Dec 10 02:14:46 PST 2012


Braxton,
Many Thanks for your advice . I will try to cast from CGPoint to NSPoint .
Nim,
I will try your code . In addition to the fact that we probably run on a different OS or MacRuby version , the other difference is that you set the width and height to full constants . The division operations that you commented out produced fractions.
Thank You All,David
 
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



More information about the MacRuby-devel mailing list