/ /   l i b / t h e r m a l _ r e c e i p t . d a r t 
 
 
 
 i m p o r t   ' p a c k a g e : f l u t t e r / f o u n d a t i o n . d a r t ' ; 
 
 i m p o r t   ' p a c k a g e : e s c _ p o s _ u t i l s _ p l u s / e s c _ p o s _ u t i l s _ p l u s . d a r t ' ; 
 
 i m p o r t   ' p a c k a g e : i m a g e / i m a g e . d a r t '   a s   i m g ; 
 
 
 
 / / /   E n u m   s e d e r h a n a   u n t u k   u k u r a n   t e k s   l o g i s 
 
 e n u m   T h e r m a l F o n t S i z e   { 
 
     s m a l l , 
 
     n o r m a l , 
 
     l a r g e , 
 
 } 
 
 
 
 e n u m   R e c e i p t T e x t T y p e   { 
 
     t e x t , 
 
     m o n e y , 
 
 } 
 
 
 
 S t r i n g   f o r m a t M o n e y ( n u m   v a l u e )   { 
 
     f i n a l   s   =   v a l u e . t o S t r i n g A s F i x e d ( 0 ) ; 
 
     f i n a l   b u f   =   S t r i n g B u f f e r ( ) ; 
 
     i n t   c o u n t   =   0 ; 
 
 
 
     f o r   ( i n t   i   =   s . l e n g t h   -   1 ;   i   > =   0 ;   i - - )   { 
 
         b u f . w r i t e ( s [ i ] ) ; 
 
         c o u n t + + ; 
 
         i f   ( c o u n t   = =   3   & &   i   ! =   0 )   { 
 
             b u f . w r i t e ( ' . ' ) ; 
 
             c o u n t   =   0 ; 
 
         } 
 
     } 
 
     r e t u r n   b u f . t o S t r i n g ( ) . s p l i t ( ' ' ) . r e v e r s e d . j o i n ( ) ; 
 
 } 
 
 
 
 / / /   M a p p i n g   u k u r a n   l o g i s   k e   P o s S t y l e s   ( a b s t r a k s i ) 
 
 c l a s s   T h e r m a l F o n t M a p p e r   { 
 
     s t a t i c   P o s S t y l e s   s t y l e ( 
 
         T h e r m a l F o n t S i z e   s i z e ,   { 
 
         b o o l   b o l d   =   f a l s e , 
 
         P o s A l i g n   a l i g n   =   P o s A l i g n . l e f t , 
 
     } )   { 
 
         s w i t c h   ( s i z e )   { 
 
             c a s e   T h e r m a l F o n t S i z e . s m a l l : 
 
                 r e t u r n   P o s S t y l e s ( 
 
                     b o l d :   b o l d , 
 
                     a l i g n :   a l i g n , 
 
                     h e i g h t :   P o s T e x t S i z e . s i z e 1 , 
 
                     w i d t h :   P o s T e x t S i z e . s i z e 1 , 
 
                 ) ; 
 
             c a s e   T h e r m a l F o n t S i z e . l a r g e : 
 
                 / /   M a n y   p r i n t e r s   o n l y   s u p p o r t   u p   t o   s i z e 2 ;   u s e   s i z e 2   f o r   l a r g e 
 
                 r e t u r n   P o s S t y l e s ( 
 
                     b o l d :   b o l d , 
 
                     a l i g n :   a l i g n , 
 
                     h e i g h t :   P o s T e x t S i z e . s i z e 2 , 
 
                     w i d t h :   P o s T e x t S i z e . s i z e 2 , 
 
                 ) ; 
 
             c a s e   T h e r m a l F o n t S i z e . n o r m a l : 
 
                 r e t u r n   P o s S t y l e s ( 
 
                     b o l d :   b o l d , 
 
                     a l i g n :   a l i g n , 
 
                     h e i g h t :   P o s T e x t S i z e . s i z e 1 , 
 
                     w i d t h :   P o s T e x t S i z e . s i z e 1 , 
 
                 ) ; 
 
         } 
 
     } 
 
 } 
 
 
 
 / / /   S i m p l e   t e x t - o n l y   p r e v i e w   b u f f e r   f o r   U I   p r e v i e w 
 
 c l a s s   R e c e i p t P r e v i e w   { 
 
     f i n a l   S t r i n g B u f f e r   _ b u f   =   S t r i n g B u f f e r ( ) ; 
 
 
 
     v o i d   t e x t ( S t r i n g   t e x t ,   { b o o l   c e n t e r   =   f a l s e } )   { 
 
         i f   ( c e n t e r )   { 
 
             _ b u f . w r i t e l n ( ' [ C E N T E R ]   $ t e x t ' ) ; 
 
         }   e l s e   { 
 
             _ b u f . w r i t e l n ( t e x t ) ; 
 
         } 
 
     } 
 
 
 
     v o i d   r o w ( S t r i n g   l e f t ,   S t r i n g   r i g h t )   { 
 
         _ b u f . w r i t e l n ( ' $ l e f t         $ r i g h t ' ) ; 
 
     } 
 
 
 
     v o i d   h r ( [ i n t   w i d t h   =   3 2 ] )   { 
 
         _ b u f . w r i t e l n ( ' - '   *   w i d t h ) ; 
 
     } 
 
 
 
     v o i d   f e e d ( [ i n t   n   =   1 ] )   { 
 
         f o r   ( i n t   i   =   0 ;   i   <   n ;   i + + )   { 
 
             _ b u f . w r i t e l n ( ) ; 
 
         } 
 
     } 
 
 
 
     v o i d   c u t ( )   { 
 
         _ b u f . w r i t e l n ( ' - - - - - - - -   C U T   - - - - - - - - ' ) ; 
 
     } 
 
 
 
     @ o v e r r i d e 
 
     S t r i n g   t o S t r i n g ( )   = >   _ b u f . t o S t r i n g ( ) ; 
 
 } 
 
 
 
 / / /   T h e r m a l R e c e i p t :   w r a p p e r   +   b u i l d e r   o v e r   e s c _ p o s _ u t i l s _ p l u s   G e n e r a t o r 
 
 / / /   -   H o l d s   b y t e s   l i s t 
 
 / / /   -   K e e p s   p r e v i e w   b u f f e r   i n   s y n c 
 
 c l a s s   T h e r m a l R e c e i p t   { 
 
     f i n a l   G e n e r a t o r   _ g e n e r a t o r ; 
 
     f i n a l   L i s t < i n t >   _ b y t e s   =   [ ] ; 
 
     f i n a l   R e c e i p t P r e v i e w   _ p r e v i e w   =   R e c e i p t P r e v i e w ( ) ; 
 
     f i n a l   P a p e r S i z e   p a p e r S i z e ; 
 
 
 
     T h e r m a l R e c e i p t . _ ( t h i s . _ g e n e r a t o r ,   t h i s . p a p e r S i z e ) ; 
 
 
 
     / / /   f a c t o r y :   c r e a t e   g e n e r a t o r   b y   l o a d i n g   c a p a b i l i t y   p r o f i l e 
 
     s t a t i c   F u t u r e < T h e r m a l R e c e i p t >   c r e a t e ( { 
 
         P a p e r S i z e   p a p e r   =   P a p e r S i z e . m m 5 8 , 
 
     } )   a s y n c   { 
 
         f i n a l   p r o f i l e   =   a w a i t   C a p a b i l i t y P r o f i l e . l o a d ( ) ; 
 
         f i n a l   g e n   =   G e n e r a t o r ( p a p e r ,   p r o f i l e ) ; 
 
         r e t u r n   T h e r m a l R e c e i p t . _ ( g e n ,   p a p e r ) ; 
 
     } 
 
 
 
     / / /   F i n a l   b y t e s   f o r   p r i n t i n g 
 
     L i s t < i n t >   b u i l d ( )   = >   L i s t . u n m o d i f i a b l e ( _ b y t e s ) ; 
 
 
 
     / / /   T e x t   p r e v i e w   ( h u m a n   r e a d a b l e ) 
 
     S t r i n g   p r e v i e w ( )   = >   _ p r e v i e w . t o S t r i n g ( ) ; 
 
 
 
     / /   - - - - - - - - - - - - - - - - - - - - - - - 
 
     / /   I M A G E   /   L O G O   S U P P O R T 
 
     / /   - - - - - - - - - - - - - - - - - - - - - - - 
 
     / / /   I n s e r t   i m a g e   f r o m   a s s e t   ( r e s i z e   a u t o m a t i c a l l y ) 
 
     / / /   ` a s s e t P a t h ` :   p a t h   i n   a s s e t s ,   e . g .   ' a s s e t s / l o g o . p n g ' 
 
     / / /   R e p l a c e   e x i s t i n g   l o g o ( . . . )   i m p l e m e n t a t i o n   w i t h   t h i s   o n e . 
 
     / / /   E x p e c t s   ` c h a r s P e r L i n e ` ,   ` _ g e n e r a t o r ` ,   ` _ b y t e s ` ,   a n d   ` _ p r e v i e w `   t o   e x i s t   i n   t h e   c l a s s . 
 
     F u t u r e < v o i d >   l o g o ( 
 
     U i n t 8 L i s t   b y t e s ,   { 
 
     P o s A l i g n   a l i g n   =   P o s A l i g n . c e n t e r , 
 
 } )   a s y n c   { 
 
     t r y   { 
 
         f i n a l   i m a g e   =   i m g . d e c o d e I m a g e ( b y t e s ) ; 
 
         i f   ( i m a g e   = =   n u l l )   r e t u r n ; 
 
 
 
         / /   l a n g s u n g   k i r i m   k e   g e n e r a t o r 
 
         _ b y t e s . a d d A l l ( 
 
             _ g e n e r a t o r . i m a g e ( 
 
                 i m a g e , 
 
                 a l i g n :   a l i g n , 
 
             ) , 
 
         ) ; 
 
     }   c a t c h   ( _ )   { 
 
         / /   s i l e n t   f a i l       r e c e i p t   t e t a p   l a n j u t 
 
     } 
 
 } 
 
 
 
 
 
     / /   / / /   H e l p e r   t o   d e t e r m i n e   a   r e a s o n a b l e   m a x   w i d t h   p e r   p a p e r   s i z e 
 
     / /   i n t   _ p a p e r M a x W i d t h ( P a p e r S i z e   p a p e r )   { 
 
     / /       / /   c o n s e r v a t i v e   d e f a u l t s   ( c o m m o n   p r i n t e r s ) 
 
     / /       s w i t c h   ( p a p e r )   { 
 
     / /           c a s e   P a p e r S i z e . m m 8 0 : 
 
     / /               r e t u r n   5 7 6 ;   / /   t y p i c a l   8 0 m m   a t   2 0 3   d p i 
 
     / /           c a s e   P a p e r S i z e . m m 5 8 : 
 
     / /           d e f a u l t : 
 
     / /               r e t u r n   3 8 4 ;   / /   t y p i c a l   5 8 m m   a t   2 0 3   d p i 
 
     / /       } 
 
     / /   } 
 
 
 
     / /   - - - - - - - - - - - - - - - - - - - - - - - 
 
     / /   T E X T   /   L A Y O U T 
 
     / /   - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
     / / /   G e n e r i c   t e x t   w i t h   l o g i c a l   f o n t   s i z e   +   a l i g n m e n t 
 
     v o i d   t e x t ( 
 
         S t r i n g   t e x t ,   { 
 
         T h e r m a l F o n t S i z e   s i z e   =   T h e r m a l F o n t S i z e . n o r m a l , 
 
         b o o l   b o l d   =   f a l s e , 
 
         b o o l   c e n t e r   =   f a l s e , 
 
     } )   { 
 
         f i n a l   s t y l e s   =   T h e r m a l F o n t M a p p e r . s t y l e ( 
 
             s i z e , 
 
             b o l d :   b o l d , 
 
             a l i g n :   c e n t e r   ?   P o s A l i g n . c e n t e r   :   P o s A l i g n . l e f t , 
 
         ) ; 
 
 
 
         _ b y t e s . a d d A l l ( _ g e n e r a t o r . t e x t ( t e x t ,   s t y l e s :   s t y l e s ) ) ; 
 
         _ p r e v i e w . t e x t ( t e x t ,   c e n t e r :   c e n t e r ) ; 
 
     } 
 
 
 
     / / /   C o n v e n i e n c e :   h o r i z o n t a l   r u l e 
 
     v o i d   h r ( [ i n t   w i d t h   =   3 2 ] )   { 
 
         _ b y t e s . a d d A l l ( _ g e n e r a t o r . h r ( ) ) ; 
 
         _ p r e v i e w . h r ( w i d t h ) ; 
 
     } 
 
 
 
     / / /   f e e d   n   l i n e s 
 
     v o i d   f e e d ( [ i n t   n   =   1 ] )   { 
 
         _ b y t e s . a d d A l l ( _ g e n e r a t o r . f e e d ( n ) ) ; 
 
         _ p r e v i e w . f e e d ( n ) ; 
 
     } 
 
 
 
     / / /   c u t   p a p e r 
 
     v o i d   c u t ( )   { 
 
         _ b y t e s . a d d A l l ( _ g e n e r a t o r . c u t ( ) ) ; 
 
         _ p r e v i e w . c u t ( ) ; 
 
     } 
 
 
 
     / /   - - - - - - - - - - - - - - - - - - - - - - - 
 
     / /   R O W   /   C O L U M N   S U P P O R T 
 
     / /   - - - - - - - - - - - - - - - - - - - - - - - 
 
 
 
     / / /   G e n e r i c   r o w   t h a t   a c c e p t s   P o s C o l u m n   l i s t   ( f u l l   c o n t r o l ) 
 
     v o i d   r o w C o l u m n s ( L i s t < P o s C o l u m n >   c o l u m n s )   { 
 
         _ b y t e s . a d d A l l ( _ g e n e r a t o r . r o w ( c o l u m n s ) ) ; 
 
         / /   F o r   p r e v i e w :   t r y   t o   c r e a t e   s i m p l e   l e f t - r i g h t   f o r   2 - c o l   c a s e 
 
         i f   ( c o l u m n s . l e n g t h   = =   2 )   { 
 
             f i n a l   l e f t   =   c o l u m n s [ 0 ] . t e x t ; 
 
             f i n a l   r i g h t   =   c o l u m n s [ 1 ] . t e x t ; 
 
             _ p r e v i e w . r o w ( l e f t ,   r i g h t ) ; 
 
         }   e l s e   { 
 
             / /   f a l l b a c k :   s i m p l y   j o i n   t e x t s 
 
             f i n a l   j o i n e d   =   c o l u m n s . m a p ( ( c )   = >   c . t e x t ) . j o i n ( '   |   ' ) ; 
 
             _ p r e v i e w . t e x t ( j o i n e d ) ; 
 
         } 
 
     } 
 
 
 
     / / /   H e l p e r   t o   c r e a t e   P o s C o l u m n   w i t h   m a p p e d   s t y l e s   ( s o   u s e r   d o e s n ' t   n e e d   t o   i m p o r t   P o s S t y l e s ) 
 
     P o s C o l u m n   c o l ( 
 
         S t r i n g   t e x t , 
 
         i n t   w i d t h ,   { 
 
         T h e r m a l F o n t S i z e   s i z e   =   T h e r m a l F o n t S i z e . n o r m a l , 
 
         b o o l   b o l d   =   f a l s e , 
 
         P o s A l i g n   a l i g n   =   P o s A l i g n . l e f t , 
 
     } )   { 
 
         r e t u r n   P o s C o l u m n ( 
 
             t e x t :   t e x t , 
 
             w i d t h :   w i d t h , 
 
             s t y l e s :   T h e r m a l F o n t M a p p e r . s t y l e ( s i z e ,   b o l d :   b o l d ,   a l i g n :   a l i g n ) , 
 
         ) ; 
 
     } 
 
 
 
     P o s C o l u m n   c o l A u t o ( 
 
         d y n a m i c   v a l u e , 
 
         i n t   w i d t h ,   { 
 
         R e c e i p t T e x t T y p e   t y p e   =   R e c e i p t T e x t T y p e . t e x t , 
 
         T h e r m a l F o n t S i z e   s i z e   =   T h e r m a l F o n t S i z e . n o r m a l , 
 
         b o o l   b o l d   =   f a l s e , 
 
         P o s A l i g n   a l i g n   =   P o s A l i g n . l e f t , 
 
     } )   { 
 
         S t r i n g   t e x t ; 
 
 
 
         i f   ( t y p e   = =   R e c e i p t T e x t T y p e . m o n e y )   { 
 
             i f   ( v a l u e   i s   n u m )   { 
 
                 t e x t   =   f o r m a t M o n e y ( v a l u e ) ; 
 
             }   e l s e   { 
 
                 t e x t   =   v a l u e . t o S t r i n g ( ) ; 
 
             } 
 
             a l i g n   =   P o s A l i g n . r i g h t ;   / /   m o n e y   s e l a l u   k a n a n 
 
         }   e l s e   { 
 
             t e x t   =   v a l u e . t o S t r i n g ( ) ; 
 
         } 
 
 
 
         r e t u r n   P o s C o l u m n ( 
 
             t e x t :   t e x t , 
 
             w i d t h :   w i d t h , 
 
             s t y l e s :   T h e r m a l F o n t M a p p e r . s t y l e ( 
 
                 s i z e , 
 
                 b o l d :   b o l d , 
 
                 a l i g n :   a l i g n , 
 
             ) , 
 
         ) ; 
 
     } 
 
 
 
     / / /   C o n v e n i e n c e   f o r   c o m m o n   2 - c o l u m n   u s a g e 
 
     v o i d   r o w ( S t r i n g   l e f t ,   S t r i n g   r i g h t ,   { b o o l   b o l d   =   f a l s e } )   { 
 
         r o w C o l u m n s ( [ 
 
             c o l ( l e f t ,   6 ,   s i z e :   T h e r m a l F o n t S i z e . n o r m a l ,   b o l d :   b o l d ) , 
 
             c o l ( r i g h t ,   6 , 
 
                     s i z e :   T h e r m a l F o n t S i z e . n o r m a l ,   b o l d :   b o l d ,   a l i g n :   P o s A l i g n . r i g h t ) , 
 
         ] ) ; 
 
     } 
 
 
 
     v o i d   r o w I t e m ( { 
 
         r e q u i r e d   i n t   q t y , 
 
         r e q u i r e d   S t r i n g   n a m e , 
 
         r e q u i r e d   n u m   p r i c e , 
 
         T h e r m a l F o n t S i z e   s i z e   =   T h e r m a l F o n t S i z e . n o r m a l , 
 
     } )   { 
 
         / /   f o r m a t   " q t y   x   p r i c e " 
 
         f i n a l   p r i c e T e x t   =   ' $ q t y   x   $ { f o r m a t M o n e y ( p r i c e ) } ' ; 
 
 
 
         r o w C o l u m n s ( [ 
 
             c o l ( n a m e ,   7 ,   s i z e :   s i z e ) , 
 
             c o l A u t o ( 
 
                 p r i c e T e x t , 
 
                 5 , 
 
                 t y p e :   R e c e i p t T e x t T y p e . m o n e y , 
 
                 s i z e :   s i z e , 
 
             ) , 
 
         ] ) ; 
 
     } 
 
 
 
     / /   - - - - - - - - - - - - - - - - - - - - - - - 
 
     / /   N O T E   /   D E T A I L   ( s i n g l e   l i n e ) 
 
     / /   - - - - - - - - - - - - - - - - - - - - - - - 
 
     v o i d   n o t e ( S t r i n g   t e x t )   { 
 
         / /   p r i n t   i n d e n t e d   l i n e   w i t h   p r e f i x 
 
         _ b y t e s . a d d A l l ( _ g e n e r a t o r . t e x t ( '     -   $ t e x t ' , 
 
                 s t y l e s :   c o n s t   P o s S t y l e s ( a l i g n :   P o s A l i g n . l e f t ) ) ) ; 
 
         _ p r e v i e w . t e x t ( '     >   $ t e x t ' ) ; 
 
     } 
 
 } 
 
 