Пример #1
0
 private void singleGradient(int[] pixels, int w, int h, float rowrel, float dx, float dy) {
   int off = 0;
   for (int y = 0; y < h; y++) {
     float colrel = rowrel;
     int j = w;
     int rgb;
     if (colrel <= 0.0) {
       rgb = colormap.getColor(0);
       do {
         pixels[off] = PixelUtils.combinePixels(rgb, pixels[off], paintMode);
         off++;
         colrel += dx;
       } while (--j > 0 && colrel <= 0.0);
     }
     while (colrel < 1.0 && --j >= 0) {
       if (type == BILINEAR) rgb = colormap.getColor(map(ImageMath.triangle(colrel)));
       else rgb = colormap.getColor(map(colrel));
       pixels[off] = PixelUtils.combinePixels(rgb, pixels[off], paintMode);
       off++;
       colrel += dx;
     }
     if (j > 0) {
       if (type == BILINEAR) rgb = colormap.getColor(0.0f);
       else rgb = colormap.getColor(1.0f);
       do {
         pixels[off] = PixelUtils.combinePixels(rgb, pixels[off], paintMode);
         off++;
       } while (--j > 0);
     }
     rowrel += dy;
   }
 }
Пример #2
0
 private void conicalGradient(int[] pixels, int y, int w, int h) {
   int off = 0;
   float angle0 = (float) Math.atan2(p2.x - p1.x, p2.y - p1.y);
   for (int x = 0; x < w; x++) {
     float angle = (float) (Math.atan2(x - p1.x, y - p1.y) - angle0) / (ImageMath.TWO_PI);
     angle += 1.0f;
     angle %= 1.0f;
     if (type == BICONICAL) angle = ImageMath.triangle(angle);
     int rgb = colormap.getColor(map(angle));
     pixels[off] = PixelUtils.combinePixels(rgb, pixels[off], paintMode);
     off++;
   }
 }
Пример #3
0
 private void squareGradient(int[] pixels, int y, int w, int h) {
   int off = 0;
   float radius = Math.max(Math.abs(p2.x - p1.x), Math.abs(p2.y - p1.y));
   for (int x = 0; x < w; x++) {
     float distance = Math.max(Math.abs(x - p1.x), Math.abs(y - p1.y));
     float ratio = distance / radius;
     if (repeat) ratio = ratio % 2;
     else if (ratio > 1.0) ratio = 1.0f;
     int rgb = colormap.getColor(map(ratio));
     pixels[off] = PixelUtils.combinePixels(rgb, pixels[off], paintMode);
     off++;
   }
 }
Пример #4
0
 private void repeatGradient(int[] pixels, int w, int h, float rowrel, float dx, float dy) {
   int off = 0;
   for (int y = 0; y < h; y++) {
     float colrel = rowrel;
     int j = w;
     int rgb;
     while (--j >= 0) {
       if (type == BILINEAR) rgb = colormap.getColor(map(ImageMath.triangle(colrel)));
       else rgb = colormap.getColor(map(ImageMath.mod(colrel, 1.0f)));
       pixels[off] = PixelUtils.combinePixels(rgb, pixels[off], paintMode);
       off++;
       colrel += dx;
     }
     rowrel += dy;
   }
 }