Example usage for java.awt Graphics setPaintMode

List of usage examples for java.awt Graphics setPaintMode

Introduction

In this page you can find the example usage for java.awt Graphics setPaintMode.

Prototype

public abstract void setPaintMode();

Source Link

Document

Sets the paint mode of this graphics context to overwrite the destination with this graphics context's current color.

Usage

From source file:com.jcraft.weirdx.Draw.java

static void reqPolySegment(Client c, XDrawable d, GC gc) throws IOException {
    int foo;//from w w w  .  j av  a 2  s. c  o m
    int n = c.length;

    Graphics graphics = d.getGraphics(gc, GC.GCFunction | GC.GCSubwindowMode | GC.GCLineWidth);

    if (graphics == null) {
        c.client.readPad(n * 4);
        return;
    }

    if (gc.clip_mask != null && gc.clip_mask instanceof ClipRectangles) {
        java.awt.Rectangle rec = (Rectangle) (gc.clip_mask.getMask());
        if (rec == null) {
            while (n > 0) {
                c.client.readPad(4);
                n--;
            }
            return;
        }
    }

    n /= 2;
    int sx = d.width;
    int sy = d.height;
    int lx = 0;
    int ly = 0;
    while (n != 0) {
        foo = c.xarray[0] = (short) c.client.readShort();
        if (foo <= sx)
            sx = foo;
        if (foo >= lx)
            lx = foo;
        foo = c.yarray[0] = (short) c.client.readShort();
        if (foo <= sy)
            sy = foo;
        if (foo >= ly)
            ly = foo;
        foo = c.xarray[1] = (short) c.client.readShort();
        if (foo <= sx)
            sx = foo;
        if (foo >= lx)
            lx = foo;
        foo = c.yarray[1] = (short) c.client.readShort();
        if (foo <= sy)
            sy = foo;
        if (foo >= ly)
            ly = foo;
        if (gc.lineWidth <= 1)
            graphics.drawPolyline(c.xarray, c.yarray, 2);
        else {
            if (c.yarray[0] == c.yarray[1]) {
                graphics.drawPolyline(c.xarray, c.yarray, 2);
                c.yarray[0] -= (gc.lineWidth / 2);
                c.yarray[1] -= (gc.lineWidth / 2);
                for (int i = 0; i < gc.lineWidth; i++) {
                    graphics.drawPolyline(c.xarray, c.yarray, 2);
                    c.yarray[0]++;
                    c.yarray[1]++;
                }
            } else {
                drawThickLine(graphics, c.xarray[0], c.yarray[0], c.xarray[1], c.yarray[1], gc.lineWidth);
            }
        }
        n--;
    }
    if (sx < 0)
        sx = 0;
    if (sy < 0)
        sy = 0;

    if (d instanceof XWindow) {
        if ((gc.attr & GC.IncludeInferiors) == 0) {
            ((XWindow) d).draw(sx, sy, lx - sx + 1, ly - sy + 1);
        }
    } else {
        ((XPixmap) d).draw(sx, sy, lx - sx + 1, ly - sy + 1);
    }

    if (gc.function == GC.GXxor || gc.function == GC.GXinvert) {
        graphics.setPaintMode();
    }
    if (gc.clip_mask != null && gc.clip_mask instanceof ClipRectangles) {
        d.restoreClip();
    }
}

From source file:com.jcraft.weirdx.Draw.java

static void reqImageText8(Client c, XDrawable d, GC gc, int x, int y) throws IOException {
    int len = c.data;
    int n = c.length;
    //int foo;/*from w ww .j  a  v  a  2s  .c  om*/
    InputOutput io = c.client;

    Graphics graphics = d.getGraphics(gc, GC.GCFunction | GC.GCFont);
    if (graphics == null) {
        io.readPad(n * 4);
        return;
    }

    if (gc.clip_mask != null && gc.clip_mask instanceof ClipRectangles) {
        java.awt.Rectangle rec = (Rectangle) (gc.clip_mask.getMask());
        if (rec == null) {
            io.readPad(4 * n);
            return;
        }
    }

    XFont font = gc.font;

    {
        io.readByte(c.bbuffer, 0, len);
        //java.awt.FontMetrics metric=graphics.getFontMetrics();

        Color tmp = graphics.getColor();
        graphics.setColor(d.getColormap().getColor(gc.bgPixel));

        if (len > 0) {
            io.readPad((-len) & 3);
        }

        if (font.encoding != null) {
            len = font.encode(c.bbuffer, 0, len, c.cbuffer);
        } else {
            char ccc = 0;
            for (int i = 0; i < len; i++) {
                ccc = c.cbuffer[i] = (char) (c.bbuffer[i] & 0xff);
                if (ccc < 0x20) {
                    if (ccc == 11)
                        c.cbuffer[i] = (char) '+';
                    else if (ccc == 12)
                        c.cbuffer[i] = (char) '+';
                    else if (ccc == 13)
                        c.cbuffer[i] = (char) '+';
                    else if (ccc == 14)
                        c.cbuffer[i] = (char) '+';
                    else if (ccc == 15)
                        c.cbuffer[i] = (char) '+';
                    else if (ccc == 18)
                        c.cbuffer[i] = (char) '-';
                    else if (ccc == 21)
                        c.cbuffer[i] = (char) '+';
                    else if (ccc == 22)
                        c.cbuffer[i] = (char) '+';
                    else if (ccc == 23)
                        c.cbuffer[i] = (char) '+';
                    else if (ccc == 24)
                        c.cbuffer[i] = (char) '+';
                    else if (ccc == 25)
                        c.cbuffer[i] = (char) '|';
                    else
                        c.cbuffer[i] = (char) 0x20;
                }
            }
        }
        graphics.fillRect(x, y - (font.ascent), font.charsWidth(c.cbuffer, 0, len), font.ascent + font.descent);
        graphics.setColor(tmp);
        graphics.drawChars(c.cbuffer, 0, len, x, y);
    }

    if (d instanceof XWindow) {
        ((XWindow) d).draw(x, y - (font.ascent), font.charsWidth(c.cbuffer, 0, len),
                font.ascent + font.descent);
    }
    if (gc.function == GC.GXxor || gc.function == GC.GXinvert) {
        graphics.setPaintMode();
    }

    if (gc.clip_mask != null && gc.clip_mask instanceof ClipRectangles) {
        d.restoreClip();
    }
}

From source file:com.jcraft.weirdx.Draw.java

static void reqPolyText16(Client c, XDrawable d, GC gc, int x, int y) throws IOException {
    int n = c.length;
    //int len;/*  ww w  . j  ava 2  s .  c  o  m*/
    int foo;

    Graphics graphics = d.getGraphics(gc, GC.GCFunction | GC.GCFont);
    if (graphics == null) {
        c.client.readPad(n * 4);
        return;
    }

    if (gc.clip_mask != null && gc.clip_mask instanceof ClipRectangles) {
        java.awt.Rectangle rec = (Rectangle) (gc.clip_mask.getMask());
        if (rec == null) {
            while (n > 0) {
                c.client.readPad(4);
                n--;
            }
            return;
        }
    }

    XFont font = gc.font;
    int delta;
    n = n * 4;

    int sx = d.width;
    int sy = d.height;
    int lx = 0;
    int ly = 0;

    while (n != 0) {
        if (n < 2)
            break;
        foo = c.client.readByte();
        n--;
        if (foo == 255) {
            int i = 0;
            foo = c.client.readByte();
            n--;
            i = foo & 0xff;
            foo = c.client.readByte();
            n--;
            i = ((i << 8) & 0xffff) | foo & 0xff;
            foo = c.client.readByte();
            n--;
            i = ((i << 8) & 0xffffff) | foo & 0xff;
            foo = c.client.readByte();
            n--;
            i = (i << 8) | foo & 0xff;
            XFont tmp = (XFont) XResource.lookupIDByType(i, XResource.RT_FONT);
            if (tmp != null) {
                font = tmp;
                graphics.setFont(font.getFont());
            } else {
                LOG.warn("font is null!!");
            }
            continue;
        }
        delta = c.client.readByte();
        n--;
        x += delta;
        if (foo > 0) {
            foo *= 2;
            c.client.readByte(c.bbuffer, 0, foo);
            n -= foo;
            if (font.encoding != null) {
                foo = font.encode(c.bbuffer, 0, foo, c.cbuffer);
                if (foo == 0) {
                    c.length = n;
                    return;
                }
            } else {
                for (int i = 0; i < foo; i++) {
                    c.cbuffer[i] = (char) (c.bbuffer[i] & 0xff);
                }
                for (int i = 0; i < foo; i++) {
                    if (c.cbuffer[i] != 0) {
                        c.cbuffer[i / 2] = c.cbuffer[i];
                    }
                }
                foo /= 2; // ????
            }

            graphics.drawChars(c.cbuffer, 0, foo, x, y);
            if (x < sx)
                sx = x;
            foo = font.charsWidth(c.cbuffer, 0, foo) + x;
            x = foo;
            if (lx < foo)
                lx = foo;
            if ((y - font.ascent) < sy)
                sy = y - font.ascent;
            if (ly < y + font.descent)
                ly = y + font.descent;
        }
    }

    if (n != 0) {
        c.client.readPad(n);
    }

    if (sx < 0)
        sx = 0;
    if (sy < 0)
        sy = 0;
    if (d instanceof XWindow) {
        ((XWindow) d).draw(sx, sy, lx - sx + 1, ly - sy + 1);
    }

    if (gc.function == GC.GXxor || gc.function == GC.GXinvert) {
        graphics.setPaintMode();
    }
    if (gc.clip_mask != null && gc.clip_mask instanceof ClipRectangles) {
        d.restoreClip();
    }
}

From source file:com.jcraft.weirdx.Draw.java

static void reqPolyText8(Client c, XDrawable d, GC gc, int x, int y) throws IOException {
    int n = c.length;
    //int len;//from  ww  w . j  a va 2 s  . c  om
    int foo;
    InputOutput io = c.client;

    Graphics graphics = d.getGraphics(gc, GC.GCFunction | GC.GCFont);
    if (graphics == null) {
        c.client.readPad(n * 4);
        return;
    }

    if (gc.clip_mask != null && gc.clip_mask instanceof ClipRectangles) {
        java.awt.Rectangle rec = (Rectangle) (gc.clip_mask.getMask());
        if (rec == null) {
            io.readPad(n * 4);
            return;
        }
    }

    XFont font = gc.font;

    int delta;
    n = n * 4;

    int sx = d.width;
    int sy = d.height;
    int lx = 0;
    int ly = 0;

    while (n != 0) {
        if (n < 2)
            break;
        foo = io.readByte();
        n--;
        if (foo == 255) {
            int i = 0;
            foo = io.readByte();
            n--;
            i = foo & 0xff;
            foo = io.readByte();
            n--;
            i = ((i << 8) & 0xffff) | foo & 0xff;
            foo = io.readByte();
            n--;
            i = ((i << 8) & 0xffffff) | foo & 0xff;
            foo = io.readByte();
            n--;
            i = (i << 8) | foo & 0xff;
            XFont tmp = (XFont) XResource.lookupIDByType(i, XResource.RT_FONT);
            if (tmp != null) {
                font = tmp;
                graphics.setFont(font.getFont());
            } else {
                LOG.warn("font is null!!");
            }
            continue;
        }

        delta = io.readByte();
        n--;
        x += delta;
        if (foo > 0) {
            io.readByte(c.bbuffer, 0, foo);
            n -= foo;

            if (font.encoding != null) {
                foo = font.encode(c.bbuffer, 0, foo, c.cbuffer);
            } else {
                char ccc = 0;
                for (int i = 0; i < foo; i++) {
                    ccc = c.cbuffer[i] = (char) (c.bbuffer[i] & 0xff);
                    if (ccc < 0x20) {
                        if (ccc == 11)
                            c.cbuffer[i] = (char) '+';
                        else if (ccc == 12)
                            c.cbuffer[i] = (char) '+';
                        else if (ccc == 13)
                            c.cbuffer[i] = (char) '+';
                        else if (ccc == 14)
                            c.cbuffer[i] = (char) '+';
                        else if (ccc == 15)
                            c.cbuffer[i] = (char) '+';
                        else if (ccc == 18)
                            c.cbuffer[i] = (char) '-';
                        else if (ccc == 21)
                            c.cbuffer[i] = (char) '+';
                        else if (ccc == 22)
                            c.cbuffer[i] = (char) '+';
                        else if (ccc == 23)
                            c.cbuffer[i] = (char) '+';
                        else if (ccc == 24)
                            c.cbuffer[i] = (char) '+';
                        else if (ccc == 25)
                            c.cbuffer[i] = (char) '|';
                        else
                            c.cbuffer[i] = (char) 0x20;
                    }
                }
            }
            graphics.drawChars(c.cbuffer, 0, foo, x, y);

            if (x < sx)
                sx = x;
            foo = font.charsWidth(c.cbuffer, 0, foo) + x;

            x = foo;

            if (lx < foo)
                lx = foo;
            if ((y - font.ascent) < sy)
                sy = y - font.ascent;
            if (ly < y + font.descent)
                ly = y + font.descent;
        }
    }

    if (n != 0) {
        io.readPad(n);
    }

    if (sx < 0)
        sx = 0;
    if (sy < 0)
        sy = 0;
    if (d instanceof XWindow) {
        ((XWindow) d).draw(sx, sy, lx - sx + 1, ly - sy + 1);
    }
    if (gc.function == GC.GXxor || gc.function == GC.GXinvert) {
        graphics.setPaintMode();
    }
    if (gc.clip_mask != null && gc.clip_mask instanceof ClipRectangles) {
        d.restoreClip();
    }
}

From source file:com.jcraft.weirdx.Draw.java

@SuppressWarnings("unused")
static void reqPolyFillRectangle(Client c, XDrawable d, GC gc) throws IOException {
    int n = c.length;
    //int foo;/*from w w  w .  j  ava 2  s .  co  m*/

    Graphics graphics = d.getGraphics(gc, GC.GCFunction | GC.GCSubwindowMode);
    if (graphics == null) {
        c.client.readPad(n * 4);
        return;
    }

    if (gc.clip_mask != null && gc.clip_mask instanceof ClipPixmap && (d instanceof XPixmap)
            && ((XPixmap) d).data != null) {
        XPixmap p = (XPixmap) d;
        byte[] data = p.data;

        XPixmap cpixmap = (XPixmap) (gc.clip_mask.getMask());

        short x, y;
        int ww, hh;

        byte f = (byte) gc.fgPixel;

        while (n != 0) {
            x = (short) c.client.readShort();
            y = (short) c.client.readShort();
            ww = c.client.readShort();
            hh = c.client.readShort();
            n -= 2;

            if (x < 0) {
                ww += x;
                x = 0;
            }
            if (y < 0) {
                hh += y;
                y = 0;
            }
            if (d.width <= x || d.height <= y)
                continue;
            if (ww <= 0 || hh <= 0)
                continue;
            //      if((x+ww)<=0 || (y+hh)<=0) continue;

            if (ww > cpixmap.width)
                ww = cpixmap.width;
            if (hh > cpixmap.height)
                hh = cpixmap.height;
            if (ww > d.width)
                ww = d.width;
            if (hh > d.height)
                hh = d.height;
            for (int i = 0; i < hh; i++) {
                for (int j = 0; j < ww; j++) {
                    if (p.data[(i + y) * p.width + x + j] == 0) {
                        p.data[(i + y) * p.width + x + j] = f;
                    }
                }
            }
        }
        return;
    }

    /*
        if(gc.clip_mask!=null &&
           (d instanceof Pixmap) &&
           gc.clip_mask.width==d.width &&
           gc.clip_mask.height==d.height &&
           ((Pixmap)d).data!=null){
            
          Pixmap p=(Pixmap)d;
            
    //      for(int i=0;i<p.height;i++){
    //   for(int j=0;j<p.width;j++){
    //     System.out.print(p.data[i*p.width+j]+" ");
    //   }
    //   System.out.println("");
    //      }
            
          byte f=(byte)gc.fgPixel;
          for(int i=0;i<gc.clip_mask.height;i++){
       for(int j=0;j<gc.clip_mask.width;j++){
         if(p.data[i*gc.clip_mask.width+j]==0){
           p.data[i*gc.clip_mask.width+j]=f;
         }
       }
          }
            
    //      for(int i=0;i<((Pixmap)d).height;i++){
    //   for(int j=0;j<((Pixmap)d).width;j++){
    //     System.out.print(((Pixmap)d).data[i*((Pixmap)d).width+j]+" ");
    //   }
    //   System.out.println("");
    //      }
            
          while(n!=0){
       c.client.readPad(8); n-=2;
          }
          return;
        }
    */

    if (gc.clip_mask != null && gc.clip_mask instanceof ClipRectangles) {
        java.awt.Rectangle rec = (Rectangle) (gc.clip_mask.getMask());
        if (rec == null) {
            while (n > 0) {
                c.client.readPad(8);
                n -= 2;
            }
            return;
        }
    }

    XPixmap p = null;
    if (((gc.attr & GC.fillStyle) == GC.FillOpaqueStippled) || ((gc.attr & GC.fillStyle) == GC.FillStippled)) {
        p = gc.stipple;
    }
    if (((gc.attr & GC.fillStyle) == GC.FillTiled)) {
        p = gc.tile.pixmap;
    }

    short x, y;
    int ww, hh;

    int sx = d.width;
    int sy = d.height;
    int lx = 0;
    int ly = 0;

    while (n != 0) {
        x = (short) c.client.readShort();
        y = (short) c.client.readShort();
        ww = c.client.readShort();
        hh = c.client.readShort();

        n -= 2;

        if (x < 0) {
            ww += x;
            x = 0;
        }
        if (y < 0) {
            hh += y;
            y = 0;
        }
        if (d.width <= x || d.height <= y)
            continue;
        if (ww <= 0 || hh <= 0)
            continue;

        if (x < sx)
            sx = x;
        ;
        if (lx < x + ww)
            lx = x + ww;
        if (y < sy)
            sy = y;
        if (ly < y + hh)
            ly = y + hh;

        if (((gc.attr & GC.fillStyle) == GC.FillOpaqueStippled) || ((gc.attr & GC.fillStyle) == GC.FillStippled)
                || ((gc.attr & GC.fillStyle) == GC.FillTiled)) {

            java.awt.Shape tmp = null;
            ww += x;
            hh += y;
            if ((p.width > ww - x) || (p.height > hh - y)) {
                tmp = graphics.getClip();
                graphics.clipRect(x, y, ww - x, hh - y);
            }
            graphics.drawImage(p.img, x, y, Screen.screen[0].root.ddxwindow);
            if (tmp != null)
                graphics.setClip(tmp);
            for (int i = x + p.width; i < ww; i += p.width) {
                int www = p.width;
                int hhh = p.height;
                if (i + www > ww)
                    www = ww - i;
                if (y + hhh >= hh)
                    hhh = hh - y;
                graphics.copyArea(x, y, www, hhh, i - x, 0);
            }
            for (int j = y + p.height; j < hh; j += p.height) {
                int hhh = p.height;
                if (j + hhh >= hh)
                    hhh = hh - j;
                graphics.copyArea(x, y, ww - x, hhh, 0, j - y);
            }
        } else {
            graphics.fillRect(x, y, ww, hh);
        }
    }

    if (sx < 0)
        sx = 0;
    if (sy < 0)
        sy = 0;
    if (d instanceof XWindow) {
        ((XWindow) d).draw(sx, sy, lx - sx + 2, ly - sy + 2);
    }

    if (gc.function == GC.GXxor || gc.function == GC.GXinvert) {
        graphics.setPaintMode();
    }

    if (gc.clip_mask != null && gc.clip_mask instanceof ClipRectangles) {
        d.restoreClip();
    }
}