9 bool( vector pPoint, vector pPos, vector pSize ) Util_InRect =
11 if( pPoint_x < pPos_x || pPoint_y < pPos_y || pPoint_x > pPos_x + pSize_x || pPoint_y > pPos_y + pSize_y )
16 bool( vector pPos1, vector pSize1, vector pPos2, vector pSize2 ) Util_RectInRect =
18 local vector lFPos1, lFPos2;
20 lFPos1 = pPos1 + pSize1;
21 lFPos2 = pPos2 + pSize2;
23 if( pPos1_x <= lFPos2_x && pPos2_x <= lFPos1_x && pPos1_y <= lFPos2_y && pPos2_y <= lFPos1_y )
34 vector( vector pPoint, vector pPos, vector pSize ) Util_ClipPoint =
37 lPoint_x = bound( pPos_x, pPoint_x, pPos_x + pSize_x );
38 lPoint_y = bound( pPos_y, pPoint_y, pPos_y + pSize_y );
45 vector( vector pPoint, vector pClipPos, vector pClipSize ) Util_GetClipDelta =
48 lPoint_x = bound( pClipPos_x, pPoint_x, pClipPos_x + pClipSize_x ) - pPoint_x;
49 lPoint_y = bound( pClipPos_y, pPoint_y, pClipPos_y + pClipSize_y ) - pPoint_y;
60 vector( vector pPos, vector pSize, vector pClipPos, vector pClipSize ) Util_ClipRect =
65 //lSize_x = bound( pClipPos_x, pPos_x + pSize_x, pClipPos_x + pClipSize_x ) - bound( pClipPos_x, pPos_x, pClipPos_x + pClipSize_x );
66 //lSize_y = bound( pClipPos_y, pPos_y + pSize_y, pClipPos_y + pClipSize_y ) - bound( pClipPos_y, pPos_y, pClipPos_y + pClipSize_y );
67 //lSize_x = min( pPos_x + pSize_x, pClipPos_x + pClipSize_x ) - max( pPos_x, pClipPos_x );
68 //lSize_y = min( pPos_y + pSize_y, pClipPos_y + pClipSize_y ) - max( pPos_y, pClipPos_y );
69 //INFO: we suppose pPos to be already clipped and pSize to have been adjusted(!!)
70 lSize_x = min( pPos_x + pSize_x, pClipPos_x + pClipSize_x ) - pPos_x;
71 lSize_y = min( pPos_y + pSize_y, pClipPos_y + pClipSize_y ) - pPos_y;
74 if( lSize_x <= 0 || lSize_y <= 0 )
85 string( string pStack ) Util_ClipStack_Reset =
87 String_Free( pStack );
88 return String_Create();
96 string( string pStack, vector pPos, vector pSize ) Util_ClipStack_Push =
98 local vector lOldPos, lOldSize, lDelta;
100 lOldPos = Util_ClipStack_GetPosition( pStack );
101 lOldSize = Util_ClipStack_GetSize( pStack );
103 if( pPos == '0 0 0' && pSize == '0 0 0' ) {
106 } else if( lOldPos != '0 0 0' || lOldSize != '0 0 0' ) {
107 lDelta = Util_GetClipDelta( pPos, lOldPos, lOldSize );
108 pPos = pPos + lDelta;
109 pSize = Util_ClipRect( pPos, pSize - lDelta, lOldPos, lOldSize );
112 pStack = Util_AltStringPush( pStack, vtos( pSize ) );
113 pStack = Util_AltStringPush( pStack, vtos( pPos ) );
123 string( string pStack ) Util_ClipStack_Pop =
125 pStack = Util_AltStringPop( pStack );
126 pStack = Util_AltStringPop( pStack );
132 Util_ClipStack_GetPosition
135 vector( string pStack ) Util_ClipStack_GetPosition =
137 return stov( String_Normal( Util_GetAltStringItem( pStack, 0 ) ) );
142 Util_ClipStack_GetSize
145 vector( string pStack ) Util_ClipStack_GetSize =
147 return stov( String_Normal( Util_GetAltStringItem( pStack, 1 ) ) );
152 Util_OriginStack_Reset
155 string( string pStack ) Util_OriginStack_Reset =
157 String_Free( pStack );
158 return String_Create();
163 Util_OriginStack_Push
166 string( string pStack, vector pOrigin ) Util_OriginStack_Push =
168 return Util_AltStringPush( pStack, vtos( pOrigin ) );
176 string( string pStack ) Util_OriginStack_Pop =
178 return Util_AltStringPop( pStack );
186 vector( string pStack ) Util_OriginStack_Get =
188 return stov( String_Normal( Util_GetAltStringTop( pStack ) ) );