| 106 | }; |
| 107 | |
| 108 | void scale_image(Image* dst, const Image* src, |
| 109 | int dst_x, int dst_y, int dst_w, int dst_h, |
| 110 | int src_x, int src_y, int src_w, int src_h) |
| 111 | { |
| 112 | gfx::Clip clip(dst_x, dst_y, src_x, src_y, dst_w, dst_h); |
| 113 | if (src_w == dst_w && src_h == dst_h) { |
| 114 | dst->copy(src, clip); |
| 115 | return; |
| 116 | } |
| 117 | |
| 118 | if (!clip.clip(dst->width(), dst->height(), src->width(), src->height())) |
| 119 | return; |
| 120 | |
| 121 | switch (dst->pixelFormat()) { |
| 122 | |
| 123 | case IMAGE_RGB: |
| 124 | image_scale_tpl<RgbTraits>( |
| 125 | dst, src, |
| 126 | dst_x, dst_y, dst_w, dst_h, |
| 127 | src_x, src_y, src_w, src_h, rgba_blender); |
| 128 | break; |
| 129 | |
| 130 | case IMAGE_GRAYSCALE: |
| 131 | image_scale_tpl<GrayscaleTraits>( |
| 132 | dst, src, |
| 133 | dst_x, dst_y, dst_w, dst_h, |
| 134 | src_x, src_y, src_w, src_h, grayscale_blender); |
| 135 | break; |
| 136 | |
| 137 | case IMAGE_INDEXED: |
| 138 | image_scale_tpl<IndexedTraits>( |
| 139 | dst, src, |
| 140 | dst_x, dst_y, dst_w, dst_h, |
| 141 | src_x, src_y, src_w, src_h, if_blender(src->maskColor())); |
| 142 | break; |
| 143 | |
| 144 | case IMAGE_BITMAP: |
| 145 | image_scale_tpl<BitmapTraits>( |
| 146 | dst, src, |
| 147 | dst_x, dst_y, dst_w, dst_h, |
| 148 | src_x, src_y, src_w, src_h, if_blender(0)); |
| 149 | break; |
| 150 | } |
| 151 | } |
| 152 | |
| 153 | void rotate_image(Image* dst, const Image* src, int x, int y, int w, int h, |
| 154 | int cx, int cy, double angle) |
no test coverage detected