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#ifndef _ANDROID_SKIN_RECT_H
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _ANDROID_SKIN_RECT_H
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/**  Rectangles
168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef enum {
198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SKIN_ROTATION_0,
208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SKIN_ROTATION_90,
218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SKIN_ROTATION_180,
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SKIN_ROTATION_270
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} SkinRotation;
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct {
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int  x, y;
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} SkinPos;
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void  skin_pos_rotate( SkinPos*  dst, SkinPos*  src, SkinRotation  rot );
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct {
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int  w, h;
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} SkinSize;
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void skin_size_rotate( SkinSize*  dst, SkinSize*  src, SkinRotation  rot );
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int  skin_size_contains( SkinSize*  size, int  x, int  y );
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct {
408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SkinPos   pos;
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SkinSize  size;
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} SkinRect;
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void  skin_rect_init     ( SkinRect*  r, int x, int y, int  w, int  h );
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void  skin_rect_translate( SkinRect*  r, int  dx, int dy );
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void  skin_rect_rotate   ( SkinRect*  dst, SkinRect*  src, SkinRotation  rotation );
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int   skin_rect_contains ( SkinRect*  r, int  x, int  y );
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int   skin_rect_intersect( SkinRect*  result, SkinRect*  r1, SkinRect*  r2 );
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int   skin_rect_equals   ( SkinRect*  r1, SkinRect*  r2 );
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef enum {
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SKIN_OUTSIDE = 0,
538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SKIN_INSIDE  = 1,
548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SKIN_OVERLAP = 2
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} SkinOverlap;
568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern SkinOverlap  skin_rect_contains_rect( SkinRect  *r1, SkinRect  *r2 );
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct {
608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int  x1, y1;
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int  x2, y2;
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} SkinBox;
638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void  skin_box_init( SkinBox*  box, int x1, int  y1, int  x2, int  y2 );
658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void  skin_box_minmax_init( SkinBox*  box );
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void  skin_box_minmax_update( SkinBox*  box, SkinRect*  rect );
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int   skin_box_minmax_to_rect( SkinBox*  box, SkinRect*  rect );
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void  skin_box_from_rect( SkinBox*  box, SkinRect*  rect );
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void  skin_box_to_rect( SkinBox*  box, SkinRect*  rect );
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* _ANDROID_SKIN_RECT_H */
72