X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Forg%2Fxwt%2FBox.java.pp;h=c58eebc04b2d338634e0d78d782cfb01a7126ac8;hb=6a96430e10e27fc1de5754cb5add705f929dd109;hp=21cc5bff5c8437aaa4906e06033c943a03e506d7;hpb=16ea48d834626fb9815da2f7632c3633838fb790;p=org.ibex.core.git diff --git a/src/org/xwt/Box.java.pp b/src/org/xwt/Box.java.pp index 21cc5bf..c58eebc 100644 --- a/src/org/xwt/Box.java.pp +++ b/src/org/xwt/Box.java.pp @@ -89,7 +89,6 @@ public final class Box extends JS.Scope { static final int NOTPACKED_FLAG = 0x00000004; static final int HSHRINK_FLAG = 0x00000008; static final int VSHRINK_FLAG = 0x00000010; - static final int TILE_FLAG = 0x00000020; static final int FONT_CHANGED_FLAG = 0x00000040; // set when font changes, cleared during repack static final int ISROOT_FLAG = 0x00000080; static final int NOCLIP_FLAG = 0x00000100; @@ -436,6 +435,7 @@ public final class Box extends JS.Scope { int globaly = parenty + (parent == null ? 0 : y); // intersect the x,y,w,h rendering window with ourselves; quit if it's empty + if ((flags & NOCLIP_FLAG) == 0) { clipw = min(max(clipx, parent == null ? 0 : globalx) + clipw, (parent == null ? 0 : globalx) + width) - globalx; cliph = min(max(clipy, parent == null ? 0 : globaly) + cliph, (parent == null ? 0 : globaly) + height) - globaly; @@ -450,11 +450,19 @@ public final class Box extends JS.Scope { } if (image != null) - if ((flags & TILE_FLAG) != 0) renderTiledImage(globalx, globaly, clipx, clipy, clipw, cliph, buf); - else buf.drawPicture(image, globalx, globaly, clipx, clipy, clipx + clipw, clipy + cliph); + for(int x = globalx; x < clipx + clipw; x += image.getWidth()) + for(int y = globaly; y < clipy + cliph; y += image.getHeight()) + buf.drawPicture(image, x, y, clipx, clipy, clipx + clipw, clipy + cliph); if (text != null && !text.equals("")) - renderText(globalx, globaly, clipx, clipy, clipw, cliph, buf); + Glyph.rasterizeGlyphs(font, fontsize, text, buf, textcolor, globalx, globaly, clipx, clipy, clipw + clipx, clipy + cliph, + new Callback() { public Object call(Object arg) { + Box.this.dirty(); + Box b = Box.this; + MARK_FOR_REFLOW_b; + b.dirty(); + return null; + }}); if (path != null) { if (rtransform == null) rpath = null; @@ -480,57 +488,6 @@ public final class Box extends JS.Scope { } } - void renderTiledImage(int globalx, int globaly, int x, int y, int w, int h, PixelBuffer buf) { - /* - FIXME - int iw = image.getWidth(); - int ih = image.getHeight(); - for(int i=(x - x)/iw; i <= (x + w - x)/iw; i++) { - for(int j=(y - y)/ih; j<= (y + h - y)/ih; j++) { - - int dx1 = max(i * iw + x, x); - int dy1 = max(j * ih + y, y); - int dx2 = min((i+1) * iw + x, x + w); - int dy2 = min((j+1) * ih + y, y + h); - - int sx1 = dx1 - (i*iw) - x; - int sy1 = dy1 - (j*ih) - y; - int sx2 = dx2 - (i*iw) - x; - int sy2 = dy2 - (j*ih) - y; - - if (dx2 - dx1 > 0 && dy2 - dy1 > 0 && sx2 - sx1 > 0 && sy2 - sy1 > 0) - buf.drawPicture(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2); - } - } - */ - } - - void renderText(int x, int y, int clipx, int clipy, int clipw, int cliph, PixelBuffer buf) { - for(int i=0; i> 16); + textheight = (int)(widthheight & 0x0000ffff); + MARK_FOR_REFLOW_this; } - // Trivial Helper Methods (should be inlined) ///////////////////////////////////////// + // Trivial Helper Method s(should be inlined) ///////////////////////////////////////// static final int min(int a, int b) { if (a