<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Codec &#187; Cocoa</title>
	<atom:link href="http://www.trembl.org/codec/tag/cocoa/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.trembl.org/codec</link>
	<description>A Personal Polylogic Code/Decode &#039;Zettelkasten&#039;</description>
	<lastBuildDate>Thu, 02 Feb 2012 03:38:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Layering one UIImage onto of another UIImage</title>
		<link>http://www.trembl.org/codec/569/</link>
		<comments>http://www.trembl.org/codec/569/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 08:15:45 +0000</pubDate>
		<dc:creator>Georg Tremmel</dc:creator>
				<category><![CDATA[Categories]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[Category]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[overlay]]></category>
		<category><![CDATA[UIImage]]></category>

		<guid isPermaLink="false">http://www.trembl.org/codec/569/</guid>
		<description><![CDATA[Combining two images, especially useful, if the overlay image has an alpha value: // // UIImage+Category.h // ImageOverlay // // Created by Georg Tremmel on 29/04/2010. // &#160; #import &#60;Foundation/Foundation.h&#62; &#160; &#160; @interface UIImage &#40;combine&#41; &#160; - &#40;UIImage*&#41;overlayWith:&#40;UIImage*&#41;overlayImage; &#160; @end And the implementation file. // // UIImage+Category.m // ImageOverlay // // Created by Georg Tremmel [...]]]></description>
			<content:encoded><![CDATA[<p>Combining two images, especially useful, if the overlay image has an alpha value:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">//</span>
<span style="color: #11740a; font-style: italic;">//  UIImage+Category.h</span>
<span style="color: #11740a; font-style: italic;">//  ImageOverlay</span>
<span style="color: #11740a; font-style: italic;">//</span>
<span style="color: #11740a; font-style: italic;">//  Created by Georg Tremmel on 29/04/2010.</span>
<span style="color: #11740a; font-style: italic;">//</span>
&nbsp;
<span style="color: #6e371a;">#import &lt;Foundation/Foundation.h&gt;</span>
&nbsp;
&nbsp;
<span style="color: #a61390;">@interface</span> UIImage <span style="color: #002200;">&#40;</span>combine<span style="color: #002200;">&#41;</span>
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span>UIImage<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>overlayWith<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIImage<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>overlayImage;
&nbsp;
<span style="color: #a61390;">@end</span></pre></div></div>

<p>And the implementation file.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #11740a; font-style: italic;">//</span>
<span style="color: #11740a; font-style: italic;">//  UIImage+Category.m</span>
<span style="color: #11740a; font-style: italic;">//  ImageOverlay</span>
<span style="color: #11740a; font-style: italic;">//</span>
<span style="color: #11740a; font-style: italic;">//  Created by Georg Tremmel on 29/04/2010.</span>
<span style="color: #11740a; font-style: italic;">//</span>
&nbsp;
<span style="color: #6e371a;">#import &quot;UIImage+Category.h&quot;</span>
&nbsp;
<span style="color: #a61390;">@implementation</span> UIImage <span style="color: #002200;">&#40;</span>combine<span style="color: #002200;">&#41;</span>
&nbsp;
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span>UIImage<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>overlayWith<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIImage<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>overlayImage <span style="color: #002200;">&#123;</span>
&nbsp;
	<span style="color: #11740a; font-style: italic;">// size is taken from the background image</span>
	UIGraphicsBeginImageContext<span style="color: #002200;">&#40;</span>self.size<span style="color: #002200;">&#41;</span>;
&nbsp;
	<span style="color: #002200;">&#91;</span>self drawAtPoint<span style="color: #002200;">:</span>CGPointZero<span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#91;</span>overlayImage drawAtPoint<span style="color: #002200;">:</span>CGPointZero<span style="color: #002200;">&#93;</span>;
&nbsp;
	<span style="color: #11740a; font-style: italic;">/*
	// If Image Artifacts appear, replace the &quot;overlayImage drawAtPoint&quot; , method with the following
	// Yes, it's a workaround, yes I filed a bug report
	CGRect imageRect = CGRectMake(0, 0, self.size.width, self.size.height);
	[overlayImage drawInRect:imageRect blendMode:kCGBlendModeOverlay alpha:0.999999999];
	*/</span>
&nbsp;
	UIImage <span style="color: #002200;">*</span>combinedImage <span style="color: #002200;">=</span> UIGraphicsGetImageFromCurrentImageContext<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;
	UIGraphicsEndImageContext<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;
&nbsp;
	<span style="color: #a61390;">return</span> combinedImage;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #a61390;">@end</span></pre></div></div>

<p>An update to 334 <a href="http://www.trembl.org/codec/334/">Combining Images with UIImage &#038; CGContext – (Offscreen drawing)</a></p>
<p>(Did I say, how much I love Categories&#8230;?)</p>
<p><strong>Update</strong><br />
I came across some strange behaviour when layering a PNG image with transparency over another image. Did not show up in the Simulator, only in iPhone 3GS (and probably also on other devices.)<br />
The base image draws fine, but the overlay image appears to be truncated and the last pixels shifted, producing some bright green artifacts.<br />
Changing</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">&#91;</span>overlayImage drawAtPoint<span style="color: #002200;">:</span>CGPointZero<span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>to</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">CGRect imageRect <span style="color: #002200;">=</span> CGRectMake<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">0</span>, <span style="color: #2400d9;">0</span>, self.size.width, self.size.height<span style="color: #002200;">&#41;</span>;
<span style="color: #002200;">&#91;</span>overlayImage drawInRect<span style="color: #002200;">:</span>imageRect blendMode<span style="color: #002200;">:</span>kCGBlendModeOverlay alpha<span style="color: #002200;">:</span><span style="color: #2400d9;">1.0</span><span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>did not really help; the green artifacts remainded. It was strange though, that they did not appear in the other blendmodes. Using</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">CGContextDrawImage<span style="color: #002200;">&#40;</span>c, imageRect, <span style="color: #002200;">&#91;</span>overlayImage CGImage<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>;</pre></div></div>

<p>would also work, but then the images turn up upside down. Not what I really needed. (Yes, I know, there might not be a hard fix for that, but really &#8211; it should be that complicated.)</p>
<p>After playing a bit more with the values, I found, that setting alpha lower than 1.0 gets rid of the display artifact:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">&#91;</span>overlayImage drawInRect<span style="color: #002200;">:</span>imageRect blendMode<span style="color: #002200;">:</span>kCGBlendModeOverlay alpha<span style="color: #002200;">:</span><span style="color: #2400d9;">0.9999999</span><span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>Bug filed at Apple&#8217;s Bug Report, let&#8217;s see. Or maybe am I missing something here?</p>
<p>Anyway here they the files are, zipped and ready for <a href="http://www.trembl.org/codec/wp-content/uploads/2010/04/UIImage+Category.zip">download</a>.</p>
<p><strong>Post Scriptum</strong></p>
<p><a href="http://www.trembl.org/codec/wp-content/uploads/2010/04/Artifact.zip">Test Project</a>, showing the visual artifact in action. Only appears on the device, NOT IN THE SIMULATOR.</p>
<p><img src="http://www.trembl.org/codec/wp-content/uploads/2010/04/UIButtons+iPhone.png" width="414" height="770"  /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trembl.org/codec/569/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Missing constants in RubyCocoa for Snow Leopard</title>
		<link>http://www.trembl.org/codec/367/</link>
		<comments>http://www.trembl.org/codec/367/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 07:02:50 +0000</pubDate>
		<dc:creator>Georg Tremmel</dc:creator>
				<category><![CDATA[Raw]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.trembl.org/codec/?p=367</guid>
		<description><![CDATA[Not sure if anyone except me will need this information again. Situation: A legacy RubyCocoa Application that runs fine in OSX 10.5, but refuses to compile in 10.6. RubyCocoa is working, only access to constants seems to be problematic. So far the following workarounds: &#60;del datetime=&#34;2010-02-02T06:57:40+00:00&#34;&#62;OSX::KCGScreenSaverWindowLevel&#60;/del&#62; ➯➤➲ OSX::NSScreenSaverWindowLevel Bug Report and Workaround about inproper mapped [...]]]></description>
			<content:encoded><![CDATA[<p>Not sure if anyone except me will need this information again.  </p>
<p>Situation: A legacy RubyCocoa Application that runs fine in OSX 10.5, but refuses to compile in 10.6. RubyCocoa is working, only access to constants seems to be problematic.</p>
<p>So far the following workarounds:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">&lt;del datetime<span style="color: #002200;">=</span><span style="color: #bf1d1a;">&quot;2010-02-02T06:57:40+00:00&quot;</span>&gt;OSX<span style="color: #002200;">::</span>KCGScreenSaverWindowLevel&lt;<span style="color: #002200;">/</span>del&gt; ➯➤➲ OSX<span style="color: #002200;">::</span>NSScreenSaverWindowLevel</pre></div></div>

<p>Bug Report and Workaround about inproper mapped constants in Bridgesupport on Snow Leopard<br />
<a href="http://lists.macosforge.org/pipermail/macruby-devel/2009-October.txt">http://lists.macosforge.org/pipermail/macruby-devel/2009-October.txt</a></p>
<p>Notes<br />
<a href="http://ruby-doc.org/core/classes/Struct.html">Structs in Ruby</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trembl.org/codec/367/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project templates for PyObjC and RubyCocoa</title>
		<link>http://www.trembl.org/codec/365/</link>
		<comments>http://www.trembl.org/codec/365/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 10:17:35 +0000</pubDate>
		<dc:creator>Georg Tremmel</dc:creator>
				<category><![CDATA[Raw]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[pyhton]]></category>
		<category><![CDATA[pyobjc]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubycocoa]]></category>
		<category><![CDATA[temlpates]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.trembl.org/codec/?p=365</guid>
		<description><![CDATA[svn co http://svn.macosforge.org/repository/ruby/MacRuby/trunk/misc/xcode-templates/ ruby-templates svn co http://svn.red-bean.com/pyobjc/trunk/pyobjc/pyobjc-xcode/ python templates Info from here: http://developer.apple.com/mac/library/releasenotes/DeveloperTools/RN-Xcode/index.html]]></description>
			<content:encoded><![CDATA[<p><code>svn co http://svn.macosforge.org/repository/ruby/MacRuby/trunk/misc/xcode-templates/ ruby-templates</p>
<p>svn co http://svn.red-bean.com/pyobjc/trunk/pyobjc/pyobjc-xcode/ python templates</code></p>
<p>Info from here: <a href="http://">http://developer.apple.com/mac/library/releasenotes/DeveloperTools/RN-Xcode/index.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trembl.org/codec/365/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CallJS &#8211; Sample Application</title>
		<link>http://www.trembl.org/codec/440/</link>
		<comments>http://www.trembl.org/codec/440/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 11:17:58 +0000</pubDate>
		<dc:creator>Georg Tremmel</dc:creator>
				<category><![CDATA[Raw]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Calling]]></category>
		<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.trembl.org/codec/?p=440</guid>
		<description><![CDATA[http://developer.apple.com/samplecode/CallJS/ PSP svn cocoa_call_AS2]]></description>
			<content:encoded><![CDATA[<p><a href="http://developer.apple.com/samplecode/CallJS/">http://developer.apple.com/samplecode/CallJS/</a></p>
<p>PSP svn<br />
cocoa_call_AS2</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trembl.org/codec/440/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

