- sf->relief==RR_RELIEF_RAISED);
- }
- }
-}
-
-
-
-void gradient_vertical(RrSurface *sf, int w, int h)
-{
- RrPixel32 *data = sf->RrPixel_data;
- RrPixel32 current;
- float dr, dg, db;
- unsigned int r,g,b;
- int x, y;
-
- dr = (float)(sf->secondary->r - sf->primary->r);
- dr/= (float)h;
-
- dg = (float)(sf->secondary->g - sf->primary->g);
- dg/= (float)h;
-
- db = (float)(sf->secondary->b - sf->primary->b);
- db/= (float)h;
-
- for (y = 0; y < h; ++y) {
- r = sf->primary->r + (int)(dr * y);
- g = sf->primary->g + (int)(dg * y);
- b = sf->primary->b + (int)(db * y);
- current = (r << default_red_offset)
- + (g << default_green_offset)
- + (b << default_blue_offset);
- for (x = 0; x < w; ++x, ++data)
- *data = current;
- }
-}
-
-void gradient_horizontal(RrSurface *sf, int w, int h)
-{
- RrPixel32 *data = sf->RrPixel_data;
- RrPixel32 current;
- float dr, dg, db;
- unsigned int r,g,b;
- int x, y;
-
- dr = (float)(sf->secondary->r - sf->primary->r);
- dr/= (float)w;
-
- dg = (float)(sf->secondary->g - sf->primary->g);
- dg/= (float)w;
-
- db = (float)(sf->secondary->b - sf->primary->b);
- db/= (float)w;
-
- for (x = 0; x < w; ++x, ++data) {
- r = sf->primary->r + (int)(dr * x);
- g = sf->primary->g + (int)(dg * x);
- b = sf->primary->b + (int)(db * x);
- current = (r << default_red_offset)
- + (g << default_green_offset)
- + (b << default_blue_offset);
- for (y = 0; y < h; ++y)
- *(data + y*w) = current;
- }
-}
-
-void gradient_diagonal(RrSurface *sf, int w, int h)
-{
- RrPixel32 *data = sf->RrPixel_data;
- RrPixel32 current;
- float drx, dgx, dbx, dry, dgy, dby;
- unsigned int r,g,b;
- int x, y;
-
- for (y = 0; y < h; ++y) {
- drx = (float)(sf->secondary->r -
- sf->primary->r);
- dry = drx/(float)h;
- drx/= (float)w;
-
- dgx = (float)(sf->secondary->g -
- sf->primary->g);
- dgy = dgx/(float)h;
- dgx/= (float)w;
-
- dbx = (float)(sf->secondary->b -
- sf->primary->b);
- dby = dbx/(float)h;
- dbx/= (float)w;
- for (x = 0; x < w; ++x, ++data) {
- r = sf->primary->r +
- ((int)(drx * x) + (int)(dry * y))/2;
- g = sf->primary->g +
- ((int)(dgx * x) + (int)(dgy * y))/2;
- b = sf->primary->b +
- ((int)(dbx * x) + (int)(dby * y))/2;
- current = (r << default_red_offset)
- + (g << default_green_offset)
- + (b << default_blue_offset);
- *data = current;
- }
- }
-}
-
-void gradient_crossdiagonal(RrSurface *sf, int w, int h)
-{
- RrPixel32 *data = sf->RrPixel_data;
- RrPixel32 current;
- float drx, dgx, dbx, dry, dgy, dby;
- unsigned int r,g,b;
- int x, y;
-
- for (y = 0; y < h; ++y) {
- drx = (float)(sf->secondary->r -
- sf->primary->r);
- dry = drx/(float)h;
- drx/= (float)w;
-
- dgx = (float)(sf->secondary->g -
- sf->primary->g);
- dgy = dgx/(float)h;
- dgx/= (float)w;
-
- dbx = (float)(sf->secondary->b -
- sf->primary->b);
- dby = dbx/(float)h;
- dbx/= (float)w;
- for (x = w; x > 0; --x, ++data) {
- r = sf->primary->r +
- ((int)(drx * (x-1)) + (int)(dry * y))/2;
- g = sf->primary->g +
- ((int)(dgx * (x-1)) + (int)(dgy * y))/2;
- b = sf->primary->b +
- ((int)(dbx * (x-1)) + (int)(dby * y))/2;
- current = (r << default_red_offset)
- + (g << default_green_offset)
- + (b << default_blue_offset);
- *data = current;