2 L e x i W Y S I W Y G L e x i 8 2-1 L e x i 2-1 Lexi L e x i C a l d e r D o c [ C L 92 ]
2 23 2.1 L e x i 1) L e x i 2) L e x i 3) L e x i W Y S I W Y G L e x i 4 ) ( l o o k - a n d - f e e l )L e x i M o t i f Presentation Manager(PM) 5 ) L e x i 6 ) L e x i ( u n d o ) 7 ) L e x i 2.2 L e x i L e x i L e x i
24 L e x i 5 2 2.2.1 (Recursive Composition) 2-2 2-2 2-3 L e x i
2 25 L e x i L e x i 2-3 C + + 2.2.2 G l y p h ) 2-4 G l y p h 2-4 Glyph C a l d e r Gl y p h [ C L 90 ] C a l d e r [ C a l 93 ] C a l d e r C a l d e r F l y w e i g h t ( 4. 6 )
26 2-1 C + + G l y p h 2-1 G l y p h R e s p o n s i b i l i t y O p e r a t i o n s A p p e a r a n c e Virtual Void Draw (Wi n d o w * ) hit detection S t r u c t u r e Virtual Void Bounds (Rect&) Virtual bool Intersects (Const Point&) Virtual Void Insert (Glyph*, int) Virtual Void Remove (Glyph*) Virtual Glyph* Child (int) Virtual Glyph* Parent() 1 ) 2 ) 3 G l y p h D r a w D r a w Wi n d o w Wi n d o w G l y p h R e c t a n g l e D r a w void Rectangle::Draw (Window* w) { w->drawrect(_x0, _y0, _x1, _y1); } _ x 0 _ y 0 _ x 1 _ y 1 R e c t a n g l e D r a w R e c t Wi n d o w ( 2-2 ) B o u n d s G l y p h I n t e r s e c t s L e x i R e c t a n g l e I n s e r t I n d e x R e m o v e C h i l d I n d e x ( ) C h i l d D r a w P a r e n t L e x i P a r e n t I n d e x 2. 8
2 27 2.2.3 C o m p o s i t e ( 4. 3 ) 2.3 L e x i L e x i ( f o r m a t t i n g ) ( l i n e b r e a k i n g ) 2.3.1 L e x i G l y p h L e x i G l y p h 2.3.2 Compositor Composition C o m p o s i t o r 2-2 L e x i
28 c o m p o s i t o r C o m p o s i t i o n C o m p o s i t i o n C o m p o s i t o r C o m p o s i t o r C o m p o s e 2-5 C o m p o s i t i o n C o m p o s i t o r 2-2 C o m p o s i t o r void SetComposition (Composition*) virtual void Compose() 2-5 Composition Compositor C o m p o s i t i o n C o m p o s i t i o n C o m p o s i t i o n C o m p o s i t o r C o m p o s e C o m p o s i t o r C o m p o s i t i o n 2-6 C o m p o s i t o r 2-6 Compositor C o m p o s i t o r 2. 8 G l y p h
2 29 C o m p o s i t o r S i m p l e C o m p o s i t o Te X C o m p o s i t o r T E X [ K n u 84 ] C o m p o s i t o r- C o m p o s i t i o n C o m p o s i t o r G l y p h C o m p o s i t i o n S e t C o m p o s i t o r 2.3.3 S t r a t e g y ( 5. 9 ) S t r a t e g y C o m p o s i t o r S t r a t e g y C o m p o s i t i o n C o m p o s i t o r S t r a t e g y S t r a t e g y S t r a t e g y G l y p h C o m p o s i t o r C o m p o s i t o r C o m p o s i t i o n 2.4 L e x i 2.4.1 C o m p o s i t i o n B o r d e r e d C o m p o s i t i o n C o m p o s i t i o n S c r o l l a b l e C o m p o s i t i o n B o r d e r e d S c r o l l a b l e C o m p o s i t i o n B o r d e r G l y p h B o r d e r
30 G l y p h B o r d e r B o r d e r B o r d e G l y p h B o r d e r G l y p h B o r d e r G l y p h ( Transparent Enclosure) 1 2 ( ) 2.4.2 MonoGlyph G l y p h M o n o G l y p h B o r d e r 2-7M o n o G l y p h 2-7 MonoGlyph M o n o G l y p h M o n o G l y p D r a w M o n o G l y p h B o r d e r :: D r a w M o n o G l y p h :: D r a w B o r d e r :: D r a w D r a w B o r d e r
2 31 B o r d e r :: D r a w M o n o G l y p h :: D r a 2-7 M o n o G l y p h S c r o l l e r L e x i S c r o l l e r C o m p o s i t i o n B o r d e r 2-8 2-8 S c r o l l e r B o r d e r G l y p h
32 2.4.3 Decorator D e c o r a t o r ( 4. 4 ) D e c o r a t o r D e c o r a t o r L e x i 2.5 L e x i L e x i L e x M o t i f L e x i L e x i 2.5.1 L e x i Wi d g e t s 1) G l y p h G l y p S c r o l l B a r G l y p h B u t t o n 2) S c r o l l B a r M o t i f S c r o l l B a r P M S c r o l l B a r M o t i f P M ( P r e s e n t a t i o n M a n a g e r ) L e x i L e x G l y p h ( M o t i f B u t t o n P M B u t t o n M a c B u t t o n ) L e x i C + +
2 33 L e x i L e x i M a c M o t i f L e x i 2.5.2 C + + M o t i f ScrollBar* sb = new MotifScrollBar; L e x i s b ScollBar* sb = guifactory->createscrollbar(); g u i F a c t o r y M o t i f F a c t o r y C r e a t e S c r o l l B a r S c r o l l B a r M o t i f S c r o l l B a r M o t i f S c r o l l B a r Motif g u i F a c t o r y M o t i f g u i F a c t o r y M o t i f F a c t o r y G U I F a c t o r y G U I F a c t o r y C r e a t e S c r o l l B a r C r e a t e B u t t o n G u i F a c t o r y M o t i f S c r o l l B a r P M B u t t o n 2-9 g u i F a c t o r y 2-9 GUIFactory
34 ( F a c t o r y ) ( P r o d u c t ) 2-10 2-10 G U I F a c t o r y g u i F a c t o r y S i n g l e t o n ( 3. 5 ) g u i F a c t o r y g u i F a c t o r y GUIFactory* guifactory = new MotifFactory; M o t i f M o t i f F a c t o r y
2 35 g u i F a c t o r y g u i F a c t o r y 2.5.3 Abstract Factory F a c t o r y P r o d u c t Abstract Factory (3.1) 2.6 L e x i ( M a c i n t o s h Presentation Manager Wi n d o w s X L e x i Le x 2.6.1 Abstract Factory Abstract Factory Abstract Factory S c r o l l B a r M o t i f S c r o l l B a r M a c S c r o l l B a r ( ) Abstract Factory C r e a t e... L e x i 2.6.2 2. 2 Wi n d o w
36 Wi n d o w 2-3 Wi n d o w s virtual void Redraw() virtual void Raise() virtual void Lower() virtual void Iconify() virtual void Deiconify() virtual void DrawLine(...) virtual void DrawRect(...) virtual void DrawPolygon(...) virtual void DrawTe x t (...) Wi n d o w 1) Wi n d o w Wi n d o w 2 ) L e x i L e x i Wi n d o w L e x i Wi n d o w L e x i Wi n d o w 2-3 Wi n d o w Wi n d o w A p p l i c a t i o n Wi n d o w I c o n Wi n d o w D i a l o g Wi n d o w L e x i L e x i Wi n d o w
2 37 L e x i Wi n d o w Wi n d o w Wi n d o w 2.6.3 Window WindowImp Wi n d o w I m p Wi n d o w I m L e x i Wi n d o w I m p Wi n d o w Wi n d o w Wi n d o w I m p
38 Wi n d o w I m p Wi n d o w 1. Wi n d o w I m p Wi n d o w I m p 2. 2 Wi n d o w D r a w R e c t R e c t a n g e l :: D r a w D r a w R e c t Wi n d o w I m p _ i m p Wi n d o w Wi n d o w Wi n d o w I m p _ i m p Wi n d o w I m p X Wi n d o w I m p X Wi n d o w I m p D e v i c e R e c t D e v i c e R e c t XDr a w R e c t a n g l e X D e v i c e R e c t ( x 0, y 0 ) P M Wi n d o w I m p Presentation Manager Wi n d o w I m p D e v i c e R e c t
2 39 X P M X D e v i c e R e c t P M X Wi n d o w I m p Wi n d o w Wi n d o w 2. Wi n d o w I m p Wi n d o w s Wi n d o w I m p _ i m p Wi n d o w I m p Wi n d o w I m Abstract Factory(3.1) Wi n d o w S y s t e m F a c t o r y Wi n d o w Wi n d o w S y s t e m F a c t o r y Wi n d o w I m p _ i m
40 w i n d o w S y s t e m F a c t o r y Wi n d o w S y s t e m F a c t o r y g u i F a c t o r y w i n d o w S y s t e m F a c t o r y 2.6.4 Bridge Wi n d o w I m p Wi n d o w Wi n d o w I m p Wi n d o w Wi n d o w I m p Wi n d o w Wi n d o w I m p Wi n d o w Wi n d o w I m p Wi n d o w Wi n d o w I m p L e x i Wi n d o w Wi n d o w I m p B r i d g e ( 4. 2 ) B r i d g e B r i d g e 2.7 L e x i W Y S I W Y G L e x i L e x i L e x i u n d o r e d o
2 41 2.7.1 M e n u I t e m G l y p h M e n u I t e m M e n u I t e m L e x i M e n u I t e m 1) / 2) 3) M e n u I t e m / c o m m a n d 2.7.2 Command C o m m a n d E x e c u t e C o m m a n d E x e c u t e 2-11 C o m m a n d C o m m a n d M e n u I t e m C o m m a n d 2-12 C o m m a n d C o m m a n d E x e c u t e L e x i ( )
42 2-11 Command 2-12 MenuItem-Command 2.7.3 ( U n d o / r e d o ) C o m m a n d U n e x e c u t e U n e x e c u t e E x e c u t e E x e c u t e E x e c u t e F o n t C o m m a n d E x e c u t e F o n t C o m m a n d U n e x e c u t C o m m a n d R e v e r s i b l e B o o l e a n t r u e f a l s e 2.7.4 ( C o m m a n d
2 43 H i s t o r y ) C o m m a n d p r e s e n t C o m m a n d U n e x e c u t e Unexecute( ) Un e x e c u t e p r e s e n t C o m m a n d p r e s e n t p r e s e n t C o m m a n d E x e c u t e Execute( ) p r e s e n t p r e s e n t
44 2.7.5 Command L e x i C o m m a n d ( 5. 2 ) L e x i C o m m a n d 2.8 2. 3 / / L e x i L e x i G l y p h 1 2 2.8.1
2 45 2.8.2 G l y p h F i r s t N e x t I s D o n e F i r s t Tr a v e r s a l C H I L D R E N P R E O R D E R P O S TO R D E R I N O R D E R N e x t I s D o n e G e t C u r r e n t C h i l d I n s e r t C + + g Tr a v e r s a l T E X T U A L _ P R E O R D E R G l y p h i t e r a t o r s
46 2.8.3 Iterator I t e r a t o r A r r a y - I t e r a t o r L i s t I t e r a t o r P r e o r d e r I t e r a t o P o s t o r d e r I t e r a t o r I t e r a t o 2-13 I t e r a t o r G l y p h C r e a t e I t e r a t o r I t e r a t o r 2-13 Iterator I t e r a t o r F i r s t N e x t I s D o n e L i s t I t e r a t o r F i r s t N e x t I s D o n e C u r r e n t I t e m i t e r a t o r A r r a y I t e r a t o r C r e a t e I t e r a t o r N u l l I t e r a t o r N u l l I t e r a t o r I t e r a t o N u l l I t e r a t o r I s D o n e t r u
2 47 G l y p h C r e a t e I t e r a t o r I t e r a t o r G l y p h _ c h i l d r e n C r e a t e I t e r a t o r I t e r a t o r i t e r a t o r I t e r a t o r C r e a t e I t e r a t o r I t e r a t o r P r e o r d e r I t e r a t o r I t e r a t o r C u r r e n t I t e m I t e r a t o r C u r r e n t I t e m N e x t I t e r a t o r I t e r a t o N e x t I t e r a t o r N e x t I t e r a t o r I s D o n e t r u e N e x t I t e r a t o r I t e r a t o r P r e o r d e r I t e r a t o r I t e r a r o r G l y p h
48 I t e r a t o r P r e o r d e r I t e r a t o r C + + P r e o r d e r I t e r a t o r 2.8.4 Iterator I t e r a t o r ( 5. 4 ) I t e r a t o r I t e r a t i o n I t e r a t o r 2.8.5 I t e r a t o r I t e r a t o r G l y p h G l y p h G l y p h G l y p h G l y p h G l y p h G l y p 2.8.6
2 49 I t e r a t o r I t e r a t o r S p e l l i n g C h e c k e r ( ) G l y p h G l y p h void CheckMe (SpellingChecker&) G l y p h C h e c k M e
50 G l y p h S u b c l a s s C h e c k M e G l y p h S p e l l i n g C h e c k e r G l y p h C h e c k G l y p h S u b c l a s s S p e l l i n g C h e c k e r C h a r a c t e r G e t C h a r C o d e C h e c k C h a r a c t e r _ C u r r e n t Wo r d I s M i s s p e l l e d _ C u r r e n t Wo r d I s M i s s p e l l e d L e x i S p e l l i n g C h e c k e r S t r a t e g y ( 2. 3 )
2 51 C h e c k C h a r a c t e r _ C u r r e n t Wo r d G e t M i s s p e l l i n g s C h e c k M e S p e l l i n g C h e c k e r C h a r a c t e r S p e l l i n g C h e c k e r G l y p h C h e c k M e ( S p e l l i n g C h e c k e r &) C h e c k M e ( S p e l l i n g C h e c k e r &) 2.8.7 Visitor v i s i t o r Vi s i t o r
52 S p e l l i n g C h e c k i n g Vi s i t o r H y p h e n a t i o n Vi s i t o r S p e l l i n g C h e c k i n g Vi s i t o r S p e l l i n g C h e c k e r C h e c k C h a r a c t e r Vi s i t C h a r a c t e r C h e c k M e A c c e p t Vi s i t o r & Vi s i t o r G l y p h H y p h e n a t i o n Vi s t i t o r H y p h e n a t i o n Vi s i t o r Vi s i t C h a r a c t e r D i s c r e t i o n a r y D i s c r e t i o n a r y G l y p h D i s c r e t i o n a r y D i s c r e t i o n a r y D i s c r e t i o n a r y D i s c r e t i o n a r D i s c r e t i o n a r y D i s c r e t i o n a r y D i s c r e t i o n a r y D i s c r e t i o n a r 2.8.8 Visitor Vi s i t o r Vi s i t o r Vi s i t o r
2 53 Vi s i t o r Vi s i t... F o o G l y p h Vi s i t o r Vi s i t F o o L e x i Vi s i t o r 2.9 L e x i 1) Composite 4. 3 2) Strategy 5. 9 3) Decorator 4. 4 4) Abstract Factory 3. 1 5) Bridge 4. 2 6) Command 5. 2 7) Iterator 5. 4 8) Vi s i t o r 5. 11 L e x i C o m p o s i t e S t r a t e g y D e c o r a t o r C o m m a n d L e x i L e x i