gblend.cpp File Reference

(r1785/r751)

#include "camtypes.h"
#include <math.h>
#include "gblend.h"

Go to the source code of this file.

Functions

BOOL IsntEnd (BYTE Type)
BOOL IsntMove (BYTE Type)
BOOL IsLine (BYTE Type)
BOOL IsCurve (BYTE Type)
BOOL IsntCurve (BYTE Type)
UINT32 ScaledDiv (UINT32 N, UINT32 D)
INT32 ScaledMul (INT32 X, INT32 N)
UINT32 length (POINT P0, POINT P1)

Variables

CONST BYTE PT_END = 0


Function Documentation

BOOL IsCurve BYTE  Type  )  [inline]
 

Definition at line 134 of file gblend.cpp.

00135 {
00136     return (Type & PT_MOVETO)==PT_BEZIERTO ;
00137 }

BOOL IsLine BYTE  Type  )  [inline]
 

Definition at line 129 of file gblend.cpp.

00130 {
00131     return (Type & PT_MOVETO)==PT_LINETO ;
00132 }

BOOL IsntCurve BYTE  Type  )  [inline]
 

Definition at line 139 of file gblend.cpp.

00140 {
00141     return (Type & PT_MOVETO)!=PT_BEZIERTO ;
00142 }

BOOL IsntEnd BYTE  Type  )  [inline]
 

Definition at line 119 of file gblend.cpp.

00120 {
00121     return Type!=PT_END ;
00122 }

BOOL IsntMove BYTE  Type  )  [inline]
 

Definition at line 124 of file gblend.cpp.

00125 {
00126     return (Type & PT_MOVETO)!=PT_MOVETO ;
00127 }

UINT32 length POINT  P0,
POINT  P1
[inline]
 

Definition at line 183 of file gblend.cpp.

00184 {
00185 #if defined(__WXMSW__)
00186     union {
00187         struct {
00188             DWORD lo ;
00189             DWORD hi ;
00190         } itemp ;
00191         double ftemp ;
00192     } val ;
00193     __asm {
00194         mov     eax,P1.x
00195         sub     eax,P0.x
00196         imul    eax
00197         mov     ebx,eax
00198         mov     ecx,edx
00199         mov     eax,P1.y
00200         sub     eax,P0.y
00201         imul    eax
00202         add     eax,ebx
00203         adc     edx,ecx
00204         mov     val.itemp.lo,eax
00205         mov     val.itemp.hi,edx
00206         fild    val.ftemp
00207         fsqrt
00208         fistp   val.itemp.lo
00209     }
00210     return val.itemp.lo ;
00211 #else
00212     return (UINT32)sqrt( double(P1.x-P0.x)*(P1.x-P0.x)+double(P1.y-P0.y)*(P1.y-P0.y) ) ;
00213 #endif
00214 }

UINT32 ScaledDiv UINT32  N,
UINT32  D
[inline]
 

Definition at line 146 of file gblend.cpp.

00147 {
00148     if (D == 0)
00149         return 1;
00150 #if defined(__WXMSW__)
00151     UINT32 temp ;
00152     __asm {
00153         mov     eax,N
00154         xor     edx,edx
00155         shld    edx,eax,28
00156         shl     eax,28
00157         div     D
00158         mov     temp,eax
00159     }
00160     return temp ;
00161 #else
00162     return UINT32((UINT64(N)<<28)/D);
00163 #endif
00164 }

INT32 ScaledMul INT32  X,
INT32  N
[inline]
 

Definition at line 166 of file gblend.cpp.

00167 {
00168 //  return X*N/0x10000000 ;
00169 #if defined(__WXMSW__)
00170     UINT32 temp ;
00171     __asm {
00172         mov     eax,X
00173         imul    N
00174         shrd    eax,edx,28
00175         mov     temp,eax
00176     }
00177     return temp ;
00178 #else
00179     return INT32(INT64(X)*N>>28);
00180 #endif
00181 }


Variable Documentation

CONST BYTE PT_END = 0
 

Definition at line 117 of file gblend.cpp.


Generated on Sat Nov 10 03:49:10 2007 for Camelot by  doxygen 1.4.4