Changeset fdc8e40 in mainline for uspace/lib/gfx/src/coord.c
- Timestamp:
- 2019-12-13T22:30:30Z (5 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3434233
- Parents:
- 4d9c807
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/gfx/src/coord.c
r4d9c807 rfdc8e40 87 87 /** Move (translate) rectangle. 88 88 * 89 * @param trans Translation 89 * @param trans Translation offset 90 90 * @param src Source rectangle 91 91 * @param dest Destination rectangle … … 93 93 void gfx_rect_translate(gfx_coord2_t *trans, gfx_rect_t *src, gfx_rect_t *dest) 94 94 { 95 gfx_coord2_add(trans, &src->p0, &dest->p0); 96 gfx_coord2_add(trans, &src->p1, &dest->p1); 95 gfx_coord2_add(&src->p0, trans, &dest->p0); 96 gfx_coord2_add(&src->p1, trans, &dest->p1); 97 } 98 99 /** Reverse move (translate) rectangle. 100 * 101 * @param trans Translation offset 102 * @param src Source rectangle 103 * @param dest Destination rectangle 104 */ 105 void gfx_rect_rtranslate(gfx_coord2_t *trans, gfx_rect_t *src, gfx_rect_t *dest) 106 { 107 gfx_coord2_subtract(&src->p0, trans, &dest->p0); 108 gfx_coord2_subtract(&src->p1, trans, &dest->p1); 97 109 } 98 110 … … 100 112 * 101 113 * Envelope is the minimal rectangle covering all pixels of both rectangles. 114 * 115 * @param a First rectangle 116 * @param b Second rectangle 117 * @param dest Place to store enveloping rectangle 102 118 */ 103 119 void gfx_rect_envelope(gfx_rect_t *a, gfx_rect_t *b, gfx_rect_t *dest) … … 124 140 dest->p1.x = max(sa.p1.x, sb.p1.x); 125 141 dest->p1.y = max(sa.p1.y, sb.p1.y); 142 } 143 144 /** Compute intersection of two rectangles. 145 * 146 * If the two rectangles do not intersect, the result will be an empty 147 * rectangle (check with gfx_rect_is_empty()). 148 * 149 * @param rect Source rectangle 150 * @param clip Clipping rectangle 151 * @param dest Place to store clipped rectangle 152 */ 153 void gfx_rect_clip(gfx_rect_t *rect, gfx_rect_t *clip, gfx_rect_t *dest) 154 { 155 gfx_rect_t srect, sclip; 156 157 gfx_rect_points_sort(rect, &srect); 158 gfx_rect_points_sort(clip, &sclip); 159 160 dest->p0.x = min(max(srect.p0.x, sclip.p0.x), sclip.p1.x); 161 dest->p0.y = min(max(srect.p0.y, sclip.p0.y), sclip.p1.y); 162 dest->p1.x = max(sclip.p0.x, min(srect.p1.x, sclip.p1.x)); 163 dest->p1.y = max(sclip.p0.y, min(srect.p1.y, sclip.p1.y)); 126 164 } 127 165
Note:
See TracChangeset
for help on using the changeset viewer.