18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Copyright (C) 2007-2008 The Android Open Source Project
28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project**
38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** This software is licensed under the terms of the GNU General Public
48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** License version 2, as published by the Free Software Foundation, and
58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** may be copied, distributed, and modified under those terms.
68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project**
78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** This program is distributed in the hope that it will be useful,
88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** but WITHOUT ANY WARRANTY; without even the implied warranty of
98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** GNU General Public License for more details.
118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project*/
128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "android/skin/rect.h"
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <limits.h>
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define  SKIN_POS_INITIALIZER   { 0, 0 }
168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_pos_rotate( SkinPos*  dst, SkinPos*  src, SkinRotation  rotation )
198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int  x = src->x;
218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int  y = src->y;
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    switch ( rotation & 3 ) {
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    case SKIN_ROTATION_0:
258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->x = x;
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->y = y;
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        break;
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    case SKIN_ROTATION_90:
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->x = -y;
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->y =  x;
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        break;
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    case SKIN_ROTATION_180:
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->x = -x;
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->y = -y;
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        break;
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    default:
408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->x =  y;
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->y = -x;
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define  SKIN_SIZE_INITIALIZER  { 0, 0 }
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_size_contains( SkinSize*  size, int  x, int  y )
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return ( (unsigned) x < (unsigned) size->w &&
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             (unsigned) y < (unsigned) size->h );
538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid
568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_size_rotate( SkinSize*  dst, SkinSize*  src, SkinRotation  rot )
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int  w = src->w;
598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int  h = src->h;
608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if ((rot & 1) != 0) {
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->w = h;
638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->h = w;
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    } else {
658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->w = w;
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        dst->h = h;
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** SKIN RECTANGLES
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define  SKIN_RECT_INITIALIZER  { SKIN_POS_INITIALIZER, SKIN_SIZE_INITIALIZER }
738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid
758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_rect_init( SkinRect*  r, int x, int  y, int  w, int  h )
768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if (w < 0 || h < 0)
788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        x = y = w = h = 0;
798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r->pos.x  = x;
818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r->pos.y  = y;
828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r->size.w = w;
838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r->size.h = h;
848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid
888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_rect_translate( SkinRect*  r, int  dx, int  dy )
898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r->pos.x += dx;
918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r->pos.y += dy;
928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid
968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_rect_rotate( SkinRect*  dst, SkinRect*  src, SkinRotation  rot )
978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int  x, y, w, h;
998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    switch (rot & 3) {
1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        case SKIN_ROTATION_90:
1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            x = src->pos.x;
1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            y = src->pos.y;
1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            w = src->size.w;
1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            h = src->size.h;
1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst->pos.x  = -(y + h);
1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst->pos.y  = x;
1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst->size.w = h;
1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst->size.h = w;
1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            break;
1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        case SKIN_ROTATION_180:
1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst->pos.x = -(src->pos.x + src->size.w);
1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst->pos.y = -(src->pos.y + src->size.h);
1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst->size  = src->size;
1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            break;
1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        case SKIN_ROTATION_270:
1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            x = src->pos.x;
1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            y = src->pos.y;
1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            w = src->size.w;
1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            h = src->size.h;
1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst->pos.x  = y;
1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst->pos.y  = -(x + w);
1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst->size.w = h;
1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst->size.h = w;
1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            break;
1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        default:
1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            dst[0] = src[0];
1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint
1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_rect_contains( SkinRect*  r, int  x, int  y )
1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return ( (unsigned)(x - r->pos.x) < (unsigned)r->size.w &&
1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project             (unsigned)(y - r->pos.y) < (unsigned)r->size.h );
1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectSkinOverlap
1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_rect_contains_rect( SkinRect  *r1, SkinRect  *r2 )
1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SkinBox  a, b;
1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    skin_box_from_rect( &a, r1 );
1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    skin_box_from_rect( &b, r2 );
1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if (a.x2 <= b.x1 || b.x2 <= a.x1 || a.y2 <= b.y1 || b.y2 <= a.y1) {
1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        return SKIN_OUTSIDE;
1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if (b.x1 >= a.x1 && b.x2 <= a.x2 && b.y1 >= a.y1 && b.y2 <= a.y2) {
1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        return SKIN_INSIDE;
1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return SKIN_OVERLAP;
1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint
1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_rect_intersect( SkinRect*  result, SkinRect*  r1, SkinRect*  r2 )
1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SkinBox  a, b, r;
1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    skin_box_from_rect( &a, r1 );
1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    skin_box_from_rect( &b, r2 );
1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if (a.x2 <= b.x1 || b.x2 <= a.x1 || a.y2 <= b.y1 || b.y2 <= a.y1) {
1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        result->pos.x = result->pos.y = result->size.w = result->size.h = 0;
1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        return 0;
1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r.x1 = (a.x1 > b.x1) ? a.x1 : b.x1;
1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r.x2 = (a.x2 < b.x2) ? a.x2 : b.x2;
1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r.y1 = (a.y1 > b.y1) ? a.y1 : b.y1;
1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r.y2 = (a.y2 < b.y2) ? a.y2 : b.y2;
1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    skin_box_to_rect( &r, result );
1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return 1;
1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint
1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_rect_equals( SkinRect*  r1, SkinRect*  r2 )
1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return (r1->pos.x  == r2->pos.x  && r1->pos.y  == r2->pos.y &&
1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project            r1->size.w == r2->size.w && r2->size.h == r2->size.h);
1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** SKIN BOXES
1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid
1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_box_minmax_init( SkinBox*  box )
1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    box->x1 = box->y1 = INT_MAX;
1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    box->x2 = box->y2 = INT_MIN;
1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid
2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_box_minmax_update( SkinBox*  a, SkinRect*  r )
2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SkinBox  b[1];
2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    skin_box_from_rect(b, r);
2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if (b->x1 < a->x1) a->x1 = b->x1;
2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if (b->y1 < a->y1) a->y1 = b->y1;
2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if (b->x2 > a->x2) a->x2 = b->x2;
2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if (b->y2 > a->y2) a->y2 = b->y2;
2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint
2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_box_minmax_to_rect( SkinBox*  box, SkinRect*  r )
2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    if (box->x1 > box->x2) {
2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        r->pos.x = r->pos.y = r->size.w = r->size.h = 0;
2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project        return 0;
2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    }
2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    skin_box_to_rect( box, r );
2218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    return 1;
2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
2238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid
2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_box_from_rect( SkinBox*  box, SkinRect*  r )
2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    box->x1 = r->pos.x;
2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    box->y1 = r->pos.y;
2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    box->x2 = r->size.w + box->x1;
2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    box->y2 = r->size.h + box->y1;
2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid
2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectskin_box_to_rect( SkinBox*  box, SkinRect*  r )
2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r->pos.x  = box->x1;
2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r->pos.y  = box->y1;
2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r->size.w = box->x2 - box->x1;
2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    r->size.h = box->y2 - box->y1;
2408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
2418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
242