<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: AndroidGraphics2D</title>
	<link>http://hanjava.net/call-151/2009/06/02/androidgraphics2d/</link>
	<description>Lost in development</description>
	<pubDate>Fri, 18 May 2012 02:17:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.2</generator>

	<item>
		<title>by: 밤치</title>
		<link>http://hanjava.net/call-151/2009/06/02/androidgraphics2d/#comment-53046</link>
		<pubDate>Thu, 04 Jun 2009 01:58:02 +0000</pubDate>
		<guid>http://hanjava.net/call-151/2009/06/02/androidgraphics2d/#comment-53046</guid>
					<description>아래 3개의 메소드를 중심으로 보면 될 것 같네요.
생성자(3번째메소드)가 private이므로 static 메소드 getInstance를 호출해서 인스턴스를 얻을 수 밖에 없는 상황이네요.

getInstance()메소드에 보면...
mAg = new AndroidGraphics2D(ctx, c, p); 
이 부분이 이상하다고 하신것 같은데
이 라인은 3번째 함수인 private 생성자 메소드를 호출하므로 특별히 이상한것 같진 않네요..




    public static AndroidGraphics2D getInstance() {
        if (mAg == null) {
            throw new RuntimeException(&quot;AndroidGraphics2D not instantiated!&quot;);
        }
        return mAg;
    }

    public static AndroidGraphics2D getInstance(Context ctx, Canvas c, Paint p) {
        if (c == null &amp;#124;&amp;#124; ctx == null) {
            throw new RuntimeException(
                    &quot;Illegal argument, Canvas cannot be null!&quot;);
        }
        mAg = new AndroidGraphics2D(ctx, c, p);
        return mAg;
    }

    private AndroidGraphics2D(Context ctx, Canvas c, Paint p) {
        super();
        mC = c;
        mP = p;
        mM = new Matrix();
        mM.reset();
        mM = mC.getMatrix();
        Rect r = mC.getClipBounds();
        int cl[] = {-1, r.top, r.left, -2, r.top, r.right, -2, r.bottom, r.right, -2, r.bottom, r.left};
        mCurrClip = new Area(createShape(cl));
        if(ctx != null) {
            WindowManager wm = (WindowManager)ctx.getSystemService(Context.WINDOW_SERVICE);
            Display d = wm.getDefaultDisplay();
            displayWidth = d.getWidth();
            displayHeight = d.getHeight();
        }
        blitter = new AndroidJavaBlitter(c);
        cm = new DirectColorModel(32, 0xff0000, 0xff00, 0xff, 0xff000000);
        sm = new SinglePixelPackedSampleModel(
                DataBuffer.TYPE_INT, displayWidth, displayHeight, cm.getMasks());
        wr = Raster.createWritableRaster(sm, null);
        dstSurf = new ImageSurface(cm, wr);
    }</description>
		<content:encoded><![CDATA[<p>아래 3개의 메소드를 중심으로 보면 될 것 같네요.<br />
생성자(3번째메소드)가 private이므로 static 메소드 getInstance를 호출해서 인스턴스를 얻을 수 밖에 없는 상황이네요.</p>
<p>getInstance()메소드에 보면&#8230;<br />
mAg = new AndroidGraphics2D(ctx, c, p);<br />
이 부분이 이상하다고 하신것 같은데<br />
이 라인은 3번째 함수인 private 생성자 메소드를 호출하므로 특별히 이상한것 같진 않네요..</p>
<p>    public static AndroidGraphics2D getInstance() {<br />
        if (mAg == null) {<br />
            throw new RuntimeException(&#8221;AndroidGraphics2D not instantiated!&#8221;);<br />
        }<br />
        return mAg;<br />
    }</p>
<p>    public static AndroidGraphics2D getInstance(Context ctx, Canvas c, Paint p) {<br />
        if (c == null || ctx == null) {<br />
            throw new RuntimeException(<br />
                    &#8220;Illegal argument, Canvas cannot be null!&#8221;);<br />
        }<br />
        mAg = new AndroidGraphics2D(ctx, c, p);<br />
        return mAg;<br />
    }</p>
<p>    private AndroidGraphics2D(Context ctx, Canvas c, Paint p) {<br />
        super();<br />
        mC = c;<br />
        mP = p;<br />
        mM = new Matrix();<br />
        mM.reset();<br />
        mM = mC.getMatrix();<br />
        Rect r = mC.getClipBounds();<br />
        int cl[] = {-1, r.top, r.left, -2, r.top, r.right, -2, r.bottom, r.right, -2, r.bottom, r.left};<br />
        mCurrClip = new Area(createShape(cl));<br />
        if(ctx != null) {<br />
            WindowManager wm = (WindowManager)ctx.getSystemService(Context.WINDOW_SERVICE);<br />
            Display d = wm.getDefaultDisplay();<br />
            displayWidth = d.getWidth();<br />
            displayHeight = d.getHeight();<br />
        }<br />
        blitter = new AndroidJavaBlitter(c);<br />
        cm = new DirectColorModel(32, 0xff0000, 0xff00, 0xff, 0xff000000);<br />
        sm = new SinglePixelPackedSampleModel(<br />
                DataBuffer.TYPE_INT, displayWidth, displayHeight, cm.getMasks());<br />
        wr = Raster.createWritableRaster(sm, null);<br />
        dstSurf = new ImageSurface(cm, wr);<br />
    }
</p>
]]></content:encoded>
				</item>
</channel>
</rss>

