If you named them width and height, you wouldn't have to add notes like that 
for other people reading your code.

On Sep 26, 2011, at 1:46 PM, koko wrote:

> I alos forgot to say that x and y below are pixels x and pixels y of the 
> bitmap, i.e. its size.
> 
> On Sep 26, 2011, at 12:28 PM, koko wrote:
> 
>> I too am working in a cross platform environment and use bitmaps in an 
>> NSView.  I use the code below and it is fast enough to pan , scroll etc with 
>> no sense of sluggishness.
>> My code looks a little different than what you have submitted. You might 
>> re-factor to my model.
>> 
>> 
>> CGColorSpaceRef colorSpace;
>> colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
>> provider;
>> CGImageRef bitmap;
>>      
>> provider = CGDataProviderCreateWithData (NULL,m_main.m_bitmap.m_array, 
>> 4*x*y, NULL);
>> bitmap = CGImageCreate(x, y, 8, 32, 4*x, colorSpace,  
>> kCGImageAlphaNoneSkipFirst|kCGBitmapByteOrder32Host,provider, NULL,true, 
>> kCGRenderingIntentDefault);
>>      
>> CGRect r;
>> if(bitmap)
>> {            
>> NSGraphicsContext *graphicsContext = [NSGraphicsContext currentContext];
>> CGContextRef context = (CGContextRef)[graphicsContext graphicsPort];
>> r = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, 
>> rect.size.height);     
>> CGContextDrawImage(context, r, bitmap);
>> }
>>      
>> CGColorSpaceRelease(colorSpace);
>> CGDataProviderRelease(provider);
>> CGImageRelease(bitmap);
>> 
>> On Sep 24, 2011, at 12:30 PM, Vojtěch Meluzín wrote:
>> 
>>> Hi folks,
>>> 
>>> I'm implementing a crossplatform (not-only GUI) library, where everything is
>>> drawn internally to an RGBA bitmap and then just copied to screen. On
>>> Windows it works like charm especially since there is a support for
>>> "in-memory" bitmaps. But I don't see such a feature on Mac. I ended up with
>>> this code:
>>> 
>>> CGColorSpaceRef colorSpace =
>>> CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
>>>      CGContextRef bmpcontext =
>>> CGBitmapContextCreate((void*)desc.Bitmap.GetData(),
>>>                                                      sz.X, sz.Y, 8, sz.X
>>> * 4, colorSpace, kCGImageAlphaNoneSkipLast);
>>>      CGColorSpaceRelease(colorSpace);
>>> 
>>>      CGContextSaveGState(context);
>>>      CGRect cliprect = { r.X1, sz.Y - r.Y2, r.GetWidth(), r.GetHeight()
>>> };
>>>      CGContextClipToRect (context, cliprect);
>>>      CGContextSetShouldAntialias (context, false);
>>> 
>>>      HIRect bounds;
>>>      bounds.origin.x = 0;
>>>      bounds.origin.y = 0;
>>>      bounds.size.width = sz.X;
>>>      bounds.size.height = sz.Y;
>>> 
>>>      CGImageRef temp = CGBitmapContextCreateImage (bmpcontext);
>>>      CGContextDrawImage(context, bounds, temp);
>>> 
>>>      CGImageRelease(temp);
>>>      CGContextRelease (bmpcontext);
>>> 
>>>      CGContextRestoreGState (context);
>>> 
>>> 
>>> It basically converts the whole bitmap into CGImageRef and then copies a
>>> part of it into the NSView's context. But it's quite slow. Is there a better
>>> way to do this? And is there a way to create the in-memory images like they
>>> are on Windows?
>>> 
>>> One more thing - I do the same thing in Carbon (I just need Cocoa because of
>>> x64...) and I noticed that the coordinates for the CGContext is inverted
>>> vertically, is that correct?? I mean the same context object type, but
>>> different Y handling...
>>> 
>>> Thanks in advance.
>>> Vojtech
>>> _______________________________________________
>>> 
>>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
>>> 
>>> Please do not post admin requests or moderator comments to the list.
>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>> 
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/cocoa-dev/koko%40highrolls.net
>>> 
>>> This email sent to k...@highrolls.net
>>> 
>> 
>> _______________________________________________
>> 
>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
>> 
>> Please do not post admin requests or moderator comments to the list.
>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>> 
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/cocoa-dev/koko%40highrolls.net
>> 
>> This email sent to k...@highrolls.net
>> 
> 
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/lrucker%40vmware.com
> 
> This email sent to lruc...@vmware.com

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to