GEnvelope2x2 Class Reference

The low level enveloper class. More...

#include <genv.h>

Inheritance diagram for GEnvelope2x2:

GMould CCObject SimpleCCObject List of all members.

Public Member Functions

 GEnvelope2x2 ()
virtual BOOL Redefine (POINT *P)
virtual BOOL FitPath (CONST POINT *IPoints, CONST BYTE *ITypes, DWORD ILength, LPPOINT OPoints, LPBYTE OTypes, DWORD OLength, BOOL Close=FALSE)
virtual void CopyShape (POINT *P)

Private Member Functions

virtual void ScaleView ()
virtual void CalcViewBBox ()
virtual void CalcViewConsts ()
virtual void Transform (DPOINT a, DPOINT &b)
BOOL CalcConsts ()
BOOL GenLine (DPOINT P0, DPOINT P6, DPOINT T0, DPOINT T6)

Private Attributes

POINT L0
POINT L1
POINT L2
POINT L3
POINT L4
POINT L5
POINT T0
POINT T1
POINT T2
POINT T3
POINT T4
POINT T5
POINT R0
POINT R1
POINT R2
POINT R3
POINT R4
POINT R5
POINT B0
POINT B1
POINT B2
POINT B3
POINT B4
POINT B5
POINT H1
POINT H2
POINT H4
POINT H5
POINT V1
POINT V2
POINT V4
POINT V5
POINT MM
DPOINT VL0
DPOINT VL1
DPOINT VL2
DPOINT VL3
DPOINT VL4
DPOINT VL5
DPOINT VT0
DPOINT VT1
DPOINT VT2
DPOINT VT3
DPOINT VT4
DPOINT VT5
DPOINT VR0
DPOINT VR1
DPOINT VR2
DPOINT VR3
DPOINT VR4
DPOINT VR5
DPOINT VB0
DPOINT VB1
DPOINT VB2
DPOINT VB3
DPOINT VB4
DPOINT VB5
DPOINT VH1
DPOINT VH2
DPOINT VH4
DPOINT VH5
DPOINT VV1
DPOINT VV2
DPOINT VV4
DPOINT VV5
DPOINT VMM
BOOL SmoothX
BOOL SmoothY
DPOINT A00
DPOINT B00
DPOINT C00
DPOINT D00
DPOINT E00
DPOINT F00
DPOINT G00
DPOINT H00
DPOINT J00
DPOINT K00
DPOINT L00
DPOINT M00
DPOINT A01
DPOINT B01
DPOINT C01
DPOINT D01
DPOINT E01
DPOINT F01
DPOINT G01
DPOINT H01
DPOINT J01
DPOINT K01
DPOINT L01
DPOINT M01
DPOINT A10
DPOINT B10
DPOINT C10
DPOINT D10
DPOINT E10
DPOINT F10
DPOINT G10
DPOINT H10
DPOINT J10
DPOINT K10
DPOINT L10
DPOINT M10
DPOINT A11
DPOINT B11
DPOINT C11
DPOINT D11
DPOINT E11
DPOINT F11
DPOINT G11
DPOINT H11
DPOINT J11
DPOINT K11
DPOINT L11
DPOINT M11

Detailed Description

The low level enveloper class.

Author:
Gavin_Theobald (Xara Group Ltd) <camelotdev@xara.com>
Date:
21/2/94

Definition at line 243 of file genv.h.


Constructor & Destructor Documentation

GEnvelope2x2::GEnvelope2x2  ) 
 

Definition at line 388 of file genv.cpp.

00389 {
00390     L0.x = 0 ; L0.y = 0 ;
00391     L1.x = 0 ; L1.y = 1 ;
00392     L2.x = 0 ; L2.y = 2 ;
00393     L3.x = 0 ; L3.y = 3 ;
00394     L4.x = 0 ; L4.y = 4 ;
00395     L5.x = 0 ; L5.y = 5 ;
00396 
00397     T0.x = 0 ; T0.y = 6 ;
00398     T1.x = 1 ; T1.y = 6 ;
00399     T2.x = 2 ; T2.y = 6 ;
00400     T3.x = 3 ; T3.y = 6 ;
00401     T4.x = 4 ; T4.y = 6 ;
00402     T5.x = 5 ; T5.y = 6 ;
00403 
00404     R0.x = 6 ; R0.y = 6 ;
00405     R1.x = 6 ; R1.y = 5 ;
00406     R2.x = 6 ; R2.y = 4 ;
00407     R3.x = 6 ; R3.y = 3 ;
00408     R4.x = 6 ; R4.y = 2 ;
00409     R5.x = 6 ; R5.y = 1 ;
00410 
00411     B0.x = 6 ; B0.y = 0 ;
00412     B1.x = 5 ; B1.y = 0 ;
00413     B2.x = 4 ; B2.y = 0 ;
00414     B3.x = 3 ; B3.y = 0 ;
00415     B4.x = 2 ; B4.y = 0 ;
00416     B5.x = 1 ; B5.y = 0 ;
00417 
00418     CalcConsts();
00419 }


Member Function Documentation

BOOL GEnvelope2x2::CalcConsts  )  [private]
 

Definition at line 453 of file genv.cpp.

00454 {
00455     MM.x = (-  B0.x +  2*B3.x -   L0.x +  2*L3.x -   R0.x +  2*R3.x -   T0.x +  2*T3.x)/ 4 ;
00456     MM.y = (-  B0.y +  2*B3.y -   L0.y +  2*L3.y -   R0.y +  2*R3.y -   T0.y +  2*T3.y)/ 4 ;
00457     H1.x = (-  B0.x +  6*B5.x - 5*L0.x + 10*L3.x -   R0.x +  2*R3.x - 5*T0.x +  6*T1.x)/12 ;
00458     H1.y = (-  B0.y +  6*B5.y - 5*L0.y + 10*L3.y -   R0.y +  2*R3.y - 5*T0.y +  6*T1.y)/12 ;
00459     H2.x = (-  B0.x +  3*B4.x - 2*L0.x +  4*L3.x -   R0.x +  2*R3.x - 2*T0.x +  3*T2.x)/ 6 ;
00460     H2.y = (-  B0.y +  3*B4.y - 2*L0.y +  4*L3.y -   R0.y +  2*R3.y - 2*T0.y +  3*T2.y)/ 6 ;
00461     H4.x = (-2*B0.x +  3*B2.x -   L0.x +  2*L3.x - 2*R0.x +  4*R3.x -   T0.x +  3*T4.x)/ 6 ;
00462     H4.y = (-2*B0.y +  3*B2.y -   L0.y +  2*L3.y - 2*R0.y +  4*R3.y -   T0.y +  3*T4.y)/ 6 ;
00463     H5.x = (-5*B0.x +  6*B1.x -   L0.x +  2*L3.x - 5*R0.x + 10*R3.x -   T0.x +  6*T5.x)/12 ;
00464     H5.y = (-5*B0.y +  6*B1.y -   L0.y +  2*L3.y - 5*R0.y + 10*R3.y -   T0.y +  6*T5.y)/12 ;
00465     V1.x = (-5*B0.x + 10*B3.x - 5*L0.x +  6*L1.x -   R0.x +  6*R5.x -   T0.x +  2*T3.x)/12 ;
00466     V1.y = (-5*B0.y + 10*B3.y - 5*L0.y +  6*L1.y -   R0.y +  6*R5.y -   T0.y +  2*T3.y)/12 ;
00467     V2.x = (-2*B0.x +  4*B3.x - 2*L0.x +  3*L2.x -   R0.x +  3*R4.x -   T0.x +  2*T3.x)/ 6 ;
00468     V2.y = (-2*B0.y +  4*B3.y - 2*L0.y +  3*L2.y -   R0.y +  3*R4.y -   T0.y +  2*T3.y)/ 6 ;
00469     V4.x = (-  B0.x +  2*B3.x -   L0.x +  3*L4.x - 2*R0.x +  3*R2.x - 2*T0.x +  4*T3.x)/ 6 ;
00470     V4.y = (-  B0.y +  2*B3.y -   L0.y +  3*L4.y - 2*R0.y +  3*R2.y - 2*T0.y +  4*T3.y)/ 6 ;
00471     V5.x = (-  B0.x +  2*B3.x -   L0.x +  6*L5.x - 5*R0.x +  6*R1.x - 5*T0.x + 10*T3.x)/12 ;
00472     V5.y = (-  B0.y +  2*B3.y -   L0.y +  6*L5.y - 5*R0.y +  6*R1.y - 5*T0.y + 10*T3.y)/12 ;
00473     SmoothX = T4.x-T3.x == T3.x-T2.x && T4.y-T3.y == T3.y-T2.y &&
00474               B4.x-B3.x == B3.x-B2.x && B4.y-B3.y == B3.y-B2.y ;
00475     SmoothY = L4.x-L3.x == L3.x-L2.x && L4.y-L3.y == L3.y-L2.y &&
00476               R4.x-R3.x == R3.x-R2.x && R4.y-R3.y == R3.y-R2.y ;
00477 
00478     CalcViewBBox() ;
00479     if (Width==0 || Depth==0)
00480         return FALSE;
00481     
00482     ScaleView() ;
00483     CalcViewConsts() ;
00484 
00485     return TRUE;
00486 }

void GEnvelope2x2::CalcViewBBox  )  [private, virtual]
 

Implements GMould.

Definition at line 521 of file genv.cpp.

00522 {
00523     MinX = MaxX = L0.x ;
00524     MinY = MaxY = L0.y ;
00525     MinX=min(MinX, INT32(L1.x)) ; MaxX=max(MaxX, INT32(L1.x)) ; MinY=min(MinY, INT32(L1.y)) ; MaxY=max(MaxY, INT32(L1.y)) ;
00526     MinX=min(MinX, INT32(L2.x)) ; MaxX=max(MaxX, INT32(L2.x)) ; MinY=min(MinY, INT32(L2.y)) ; MaxY=max(MaxY, INT32(L2.y)) ;
00527     MinX=min(MinX, INT32(L3.x)) ; MaxX=max(MaxX, INT32(L3.x)) ; MinY=min(MinY, INT32(L3.y)) ; MaxY=max(MaxY, INT32(L3.y)) ;
00528     MinX=min(MinX, INT32(L4.x)) ; MaxX=max(MaxX, INT32(L4.x)) ; MinY=min(MinY, INT32(L4.y)) ; MaxY=max(MaxY, INT32(L4.y)) ;
00529     MinX=min(MinX, INT32(L5.x)) ; MaxX=max(MaxX, INT32(L5.x)) ; MinY=min(MinY, INT32(L5.y)) ; MaxY=max(MaxY, INT32(L5.y)) ;
00530     MinX=min(MinX, INT32(T0.x)) ; MaxX=max(MaxX, INT32(T0.x)) ; MinY=min(MinY, INT32(T0.y)) ; MaxY=max(MaxY, INT32(T0.y)) ;
00531     MinX=min(MinX, INT32(T1.x)) ; MaxX=max(MaxX, INT32(T1.x)) ; MinY=min(MinY, INT32(T1.y)) ; MaxY=max(MaxY, INT32(T1.y)) ;
00532     MinX=min(MinX, INT32(T2.x)) ; MaxX=max(MaxX, INT32(T2.x)) ; MinY=min(MinY, INT32(T2.y)) ; MaxY=max(MaxY, INT32(T2.y)) ;
00533     MinX=min(MinX, INT32(T3.x)) ; MaxX=max(MaxX, INT32(T3.x)) ; MinY=min(MinY, INT32(T3.y)) ; MaxY=max(MaxY, INT32(T3.y)) ;
00534     MinX=min(MinX, INT32(T4.x)) ; MaxX=max(MaxX, INT32(T4.x)) ; MinY=min(MinY, INT32(T4.y)) ; MaxY=max(MaxY, INT32(T4.y)) ;
00535     MinX=min(MinX, INT32(T5.x)) ; MaxX=max(MaxX, INT32(T5.x)) ; MinY=min(MinY, INT32(T5.y)) ; MaxY=max(MaxY, INT32(T5.y)) ;
00536     MinX=min(MinX, INT32(R0.x)) ; MaxX=max(MaxX, INT32(R0.x)) ; MinY=min(MinY, INT32(R0.y)) ; MaxY=max(MaxY, INT32(R0.y)) ;
00537     MinX=min(MinX, INT32(R1.x)) ; MaxX=max(MaxX, INT32(R1.x)) ; MinY=min(MinY, INT32(R1.y)) ; MaxY=max(MaxY, INT32(R1.y)) ;
00538     MinX=min(MinX, INT32(R2.x)) ; MaxX=max(MaxX, INT32(R2.x)) ; MinY=min(MinY, INT32(R2.y)) ; MaxY=max(MaxY, INT32(R2.y)) ;
00539     MinX=min(MinX, INT32(R3.x)) ; MaxX=max(MaxX, INT32(R3.x)) ; MinY=min(MinY, INT32(R3.y)) ; MaxY=max(MaxY, INT32(R3.y)) ;
00540     MinX=min(MinX, INT32(R4.x)) ; MaxX=max(MaxX, INT32(R4.x)) ; MinY=min(MinY, INT32(R4.y)) ; MaxY=max(MaxY, INT32(R4.y)) ;
00541     MinX=min(MinX, INT32(R5.x)) ; MaxX=max(MaxX, INT32(R5.x)) ; MinY=min(MinY, INT32(R5.y)) ; MaxY=max(MaxY, INT32(R5.y)) ;
00542     MinX=min(MinX, INT32(B0.x)) ; MaxX=max(MaxX, INT32(B0.x)) ; MinY=min(MinY, INT32(B0.y)) ; MaxY=max(MaxY, INT32(B0.y)) ;
00543     MinX=min(MinX, INT32(B1.x)) ; MaxX=max(MaxX, INT32(B1.x)) ; MinY=min(MinY, INT32(B1.y)) ; MaxY=max(MaxY, INT32(B1.y)) ;
00544     MinX=min(MinX, INT32(B2.x)) ; MaxX=max(MaxX, INT32(B2.x)) ; MinY=min(MinY, INT32(B2.y)) ; MaxY=max(MaxY, INT32(B2.y)) ;
00545     MinX=min(MinX, INT32(B3.x)) ; MaxX=max(MaxX, INT32(B3.x)) ; MinY=min(MinY, INT32(B3.y)) ; MaxY=max(MaxY, INT32(B3.y)) ;
00546     MinX=min(MinX, INT32(B4.x)) ; MaxX=max(MaxX, INT32(B4.x)) ; MinY=min(MinY, INT32(B4.y)) ; MaxY=max(MaxY, INT32(B4.y)) ;
00547     MinX=min(MinX, INT32(B5.x)) ; MaxX=max(MaxX, INT32(B5.x)) ; MinY=min(MinY, INT32(B5.y)) ; MaxY=max(MaxY, INT32(B5.y)) ;
00548     Width = MaxX-MinX ;
00549     Depth = MaxY-MinY ;
00550 }

void GEnvelope2x2::CalcViewConsts  )  [private, virtual]
 

Implements GMould.

Definition at line 593 of file genv.cpp.

00594 {
00595     A00.x = VL0.x ;
00596     A00.y = VL0.y ;
00597     B00.x = 3*(VB5.x-VL0.x) ;
00598     B00.y = 3*(VB5.y-VL0.y) ;
00599     C00.x = 3*(VL1.x-VL0.x) ;
00600     C00.y = 3*(VL1.y-VL0.y) ;
00601     D00.x = 3*(VH1.x+VV1.x)-2*(VL3.x+VB3.x)-VL0.x-VMM.x-B00.x-C00.x ;
00602     D00.y = 3*(VH1.y+VV1.y)-2*(VL3.y+VB3.y)-VL0.y-VMM.y-B00.y-C00.y ;
00603     E00.x = 3*(VL0.x-2*VB5.x+VB4.x) ;
00604     E00.y = 3*(VL0.y-2*VB5.y+VB4.y) ;
00605     F00.x = 3*(VL2.x-2*VL1.x+VL0.x) ;
00606     F00.y = 3*(VL2.y-2*VL1.y+VL0.y) ;
00607     G00.x = 3*(VH2.x-2*VH1.x+VL3.x)-E00.x ;
00608     G00.y = 3*(VH2.y-2*VH1.y+VL3.y)-E00.y ;
00609     H00.x = 3*(VB3.x-2*VV1.x+VV2.x)-F00.x ;
00610     H00.y = 3*(VB3.y-2*VV1.y+VV2.y)-F00.y ;
00611     J00.x = VB3.x-3*(VB4.x-VB5.x)-VL0.x ;
00612     J00.y = VB3.y-3*(VB4.y-VB5.y)-VL0.y ;
00613     K00.x = VL3.x-3*(VL2.x-VL1.x)-VL0.x ;
00614     K00.y = VL3.y-3*(VL2.y-VL1.y)-VL0.y ;
00615     L00.x = VMM.x-3*(VH2.x-VH1.x)-VL3.x-J00.x ;
00616     L00.y = VMM.y-3*(VH2.y-VH1.y)-VL3.y-J00.y ;
00617     M00.x = VMM.x-3*(VV2.x-VV1.x)-VB3.x-K00.x ;
00618     M00.y = VMM.y-3*(VV2.y-VV1.y)-VB3.y-K00.y ;
00619 
00620     A01.x = VB3.x ;
00621     A01.y = VB3.y ;
00622     B01.x = 3*(VB2.x-VB3.x) ;
00623     B01.y = 3*(VB2.y-VB3.y) ;
00624     C01.x = 3*(VV1.x-VB3.x) ;
00625     C01.y = 3*(VV1.y-VB3.y) ;
00626     D01.x = 3*(VH4.x+VR5.x)-2*(VMM.x+VB0.x)-VB3.x-VR3.x-B01.x-C01.x ;
00627     D01.y = 3*(VH4.y+VR5.y)-2*(VMM.y+VB0.y)-VB3.y-VR3.y-B01.y-C01.y ;
00628     E01.x = 3*(VB3.x-2*VB2.x+VB1.x) ;
00629     E01.y = 3*(VB3.y-2*VB2.y+VB1.y) ;
00630     F01.x = 3*(VV2.x-2*VV1.x+VB3.x) ;
00631     F01.y = 3*(VV2.y-2*VV1.y+VB3.y) ;
00632     G01.x = 3*(VH5.x-2*VH4.x+VMM.x)-E01.x ;
00633     G01.y = 3*(VH5.y-2*VH4.y+VMM.y)-E01.y ;
00634     H01.x = 3*(VB0.x-2*VR5.x+VR4.x)-F01.x ;
00635     H01.y = 3*(VB0.y-2*VR5.y+VR4.y)-F01.y ;
00636     J01.x = VB0.x-3*(VB1.x-VB2.x)-VB3.x ;
00637     J01.y = VB0.y-3*(VB1.y-VB2.y)-VB3.y ;
00638     K01.x = VMM.x-3*(VV2.x-VV1.x)-VB3.x ;
00639     K01.y = VMM.y-3*(VV2.y-VV1.y)-VB3.y ;
00640     L01.x = VR3.x-3*(VH5.x-VH4.x)-VMM.x-J01.x ;
00641     L01.y = VR3.y-3*(VH5.y-VH4.y)-VMM.y-J01.y ;
00642     M01.x = VR3.x-3*(VR4.x-VR5.x)-VB0.x-K01.x ;
00643     M01.y = VR3.y-3*(VR4.y-VR5.y)-VB0.y-K01.y ;
00644 
00645     A10.x = VL3.x ;
00646     A10.y = VL3.y ;
00647     B10.x = 3*(VH1.x-VL3.x) ;
00648     B10.y = 3*(VH1.y-VL3.y) ;
00649     C10.x = 3*(VL4.x-VL3.x) ;
00650     C10.y = 3*(VL4.y-VL3.y) ;
00651     D10.x = 3*(VT1.x+VV4.x)-2*(VT0.x+VMM.x)-VL3.x-VT3.x-B10.x-C10.x ;
00652     D10.y = 3*(VT1.y+VV4.y)-2*(VT0.y+VMM.y)-VL3.y-VT3.y-B10.y-C10.y ;
00653     E10.x = 3*(VL3.x-2*VH1.x+VH2.x) ;
00654     E10.y = 3*(VL3.y-2*VH1.y+VH2.y) ;
00655     F10.x = 3*(VL5.x-2*VL4.x+VL3.x) ;
00656     F10.y = 3*(VL5.y-2*VL4.y+VL3.y) ;
00657     G10.x = 3*(VT2.x-2*VT1.x+VT0.x)-E10.x ;
00658     G10.y = 3*(VT2.y-2*VT1.y+VT0.y)-E10.y ;
00659     H10.x = 3*(VMM.x-2*VV4.x+VV5.x)-F10.x ;
00660     H10.y = 3*(VMM.y-2*VV4.y+VV5.y)-F10.y ;
00661     J10.x = VMM.x-3*(VH2.x-VH1.x)-VL3.x ;
00662     J10.y = VMM.y-3*(VH2.y-VH1.y)-VL3.y ;
00663     K10.x = VT0.x-3*(VL5.x-VL4.x)-VL3.x ;
00664     K10.y = VT0.y-3*(VL5.y-VL4.y)-VL3.y ;
00665     L10.x = VT3.x-3*(VT2.x-VT1.x)-VT0.x-J10.x ;
00666     L10.y = VT3.y-3*(VT2.y-VT1.