Ë
    ¡ëi3  ã                   ó~   — d Z dZddlmZ ddlmZmZmZmZ ddl	m
Z
 ddlmZ  G d„ de«      Zd	„ Zed
k(  r e«        yy)z3.3.0zThis file is a
é    )Úcolors)ÚRectÚDrawingÚGroupÚString)ÚLabel)ÚWidgetc                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚEventCalendarc                 óò   — d| _         d| _        d| _        d| _        d | _        d| _        g | _        d | _        d | _        d | _	        d| _
        g | _        d | _        d | _        d| _        g | _        g | _        y )Nr   i,  é–   é   )ÚxÚyÚwidthÚheightÚtimeColWidthÚtrackRowHeightÚdataÚ
trackNamesÚ	startTimeÚendTimeÚdayÚ_talksVisibleÚ
_startTimeÚ_endTimeÚ_trackCountÚ
_colWidthsÚ_colLeftEdges)Úselfs    úc/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/graphics/widgets/eventcal.pyÚ__init__zEventCalendar.__init__   s€   € ØˆŒØˆŒØˆŒ
ØˆŒØ ˆÔØ ˆÔØˆŒ	ØˆŒàˆŒØˆŒØˆŒð  ˆÔØˆŒØˆŒØˆÔØˆŒØˆÕó    c                 ó   — | j                  | j                  «      | _        t        | j	                  «       «      | _        | j                  «        | j                  g| _        | j                  €z| j                  d| j
                  z   z  }|gd| j
                  z   z  | _        t        | j
                  «      D ]-  }| j                  j                  | j                  d   |z   «       Œ/ y| j                  g| _        | j                  | j                  z
  | j
                  z  }t        | j
                  «      D ]H  }| j                  j                  |«       | j                  j                  | j                  d   |z   «       ŒJ y)z4Called at start of draw.  Sets various column widthsNé   éÿÿÿÿ)ÚgetRelevantTalksr   r   ÚlenÚgetAllTracksr   ÚcomputeStartAndEndTimesr   r   r   r   r   ÚrangeÚappend)r    ÚwÚis      r!   ÚcomputeSizezEventCalendar.computeSize*   sJ  € à!×2Ñ2°4·9±9Ó=ˆÔÜ˜t×0Ñ0Ó2Ó3ˆÔØ×$Ñ$Ô&Ø"Ÿf™f˜XˆÔØ×ÑÐ$Ø—
‘
˜a $×"2Ñ"2Ñ2Ñ3ˆAØ ˜c Q¨×(8Ñ(8Ñ%8Ñ9ˆDŒOÜ˜4×+Ñ+Ó,ò F�Ø×"Ñ"×)Ñ)¨$×*<Ñ*<¸RÑ*@À1Ñ*DÕEñFð  $×0Ñ0Ð1ˆDŒOØ—‘˜d×/Ñ/Ñ/°4×3CÑ3CÑCˆAÜ˜4×+Ñ+Ó,ò F�Ø—‘×&Ñ& qÔ)Ø×"Ñ"×)Ñ)¨$×*<Ñ*<¸RÑ*@À1Ñ*DÕEñFr#   c                 óš  — | j                   r| j                   | _        nC| j                  D ]4  \  }}}}}}| j                  €|| _        Œ|| j                  k  sŒ.|| _        Œ6 | j                  r| j                  | _        y| j                  D ]=  \  }}}}}}| j                  €||z   | _        Œ!||z   | j                  kD  sŒ4||z   | _        Œ? y)z(Work out first and last times to displayN)r   r   r   r   r   )r    ÚtitleÚspeakerÚtrackIdr   ÚstartÚdurations          r!   r*   z%EventCalendar.computeStartAndEndTimes>   sÃ   € à�>Š>Ø"Ÿn™nˆD�OàCG×CUÑCUò 0Ñ?�˜ ¨#¨u°hà—?‘?Ð*Ø&+�D•Oà˜tŸ™Ó.Ø*/˜�ð0ð �<Š<Ø ŸL™LˆD�MàCG×CUÑCUò 9Ñ?�˜ ¨#¨u°hØ—=‘=Ð(Ø$)¨HÑ$4�D•Mà˜xÑ'¨$¯-©-Ó7Ø(-°Ñ(8˜�ñ9r#   c                 óŒ   — g }| j                   D ]"  \  }}}}}}|€Œ||vsŒ|j                  |«       Œ$ |j                  «        |S )N)r   r,   Úsort)r    Útracksr1   r2   r3   r   Úhoursr5   s           r!   r)   zEventCalendar.getAllTracksX   sQ   € ØˆØ?C¿y¹yò 	+Ñ;ˆU�G˜W c¨5°(ØÑ"Ø &Ò(Ø—M‘M 'Õ*ð	+ð 	�‰ŒØˆr#   c                 óú   — g }|D ]s  }|\  }}}}}}	|dk7  sJ d«       ‚|| j                   k(  sŒ(| j                  �||	z   | j                  k\  sŒG| j                  �|| j                  k  sŒc|j                  |«       Œu |S )zScans for tracks actually usedr   z2trackId must be None or 1,2,3... zero not allowed!)r   r   r   r,   )
r    ÚtalkListÚusedÚtalkr1   r2   r3   r   r9   r5   s
             r!   r'   zEventCalendar.getRelevantTalksa   s‡   € àˆØò 	&ˆDØ>BÑ;ˆU�G˜W c¨5°(Ø˜a’<ÐUÐ!UÓU�<Ø�d—h‘h‹Ø—n‘nÐ,°5¸8Ñ3CÈÏÉÓ2VØ—l‘lÐ*°¸¿¹Ó0EØ—K‘K Õ%ð	&ð ˆr#   c                 ó´   — | j                   | j                  z
  }|| j                  z
  | j                  | j                  z
  z  }| j                  |z   ||z  z
  }|S )z+Return y-value corresponding to times given)r   r   r   r   r   )r    ÚtheTimeÚ
axisHeightÚproportionUpr   s        r!   Ú	scaleTimezEventCalendar.scaleTimem   sS   € à—[‘[ 4×#6Ñ#6Ñ6ˆ
à  4§?¡?Ñ2°t·}±}ÀtÇÁÑ7VÑWˆØ�F‰F�ZÑ :°Ñ#<Ñ=ˆØˆr#   c                 ó0  — t        «       }| j                  ||z   «      }| j                  |«      }||z
  }|€,| j                  d   }	| j                  | j                  d   z
  }
n| j                  |   }	| j                  |   }
t        «       }|j                  |«       |j                  |	d|
z  z   |d|z  z   «       d|_        |
|_        ||_	        d|_
        t        |	||
|t        j                  ¬«      }|j                  |«       |j                  |«       |S )z!Return shapes for a specific talkr%   r   ç      à?Úcé   ©Ú	fillColor)r   rB   r   r   r   r   ÚsetTextÚ	setOriginÚ	boxAnchorr   ÚfontSizer   r   ÚcyanÚadd)r    r   r5   r3   ÚtextÚgÚy_bottomÚy_topÚy_heightr   r   ÚlabÚrs                r!   ÚgetTalkRectzEventCalendar.getTalkRectv   s  € ä‹GˆØ—>‘> )¨hÑ"6Ó7ˆØ—‘˜yÓ)ˆØ˜8Ñ#ˆàˆ?à×"Ñ" 1Ñ%ˆAØ—J‘J §¡°Ñ!3Ñ3‰Eð ×"Ñ" 7Ñ+ˆAØ—O‘O GÑ,ˆEä‹gˆØ�‰�DÔØ�‰�a˜#˜e™)‘m X¨c°(©lÑ%:Ô;ØˆŒØˆŒ	ØˆŒ
ØˆŒä��H˜e X¼¿¹ÔEˆØ	�‰ˆaŒØ	�‰ˆcŒ
ð ˆr#   c           	      ó8  — | j                  «        t        «       }|j                  t        | j                  | j
                  | j                  d   | j                  | j                  z
  t        j                  ¬«      «       | j                  | j                  d   z   }| j
                  | j                  z   | j                  z
  }t        | j                  «      D ]{  }| j                  |dz      }t        |||| j                  t        j                  ¬«      }t        |d|z  z   |d|z  d¬«      }|j                  |«       |j                  |«       ||z   }Œ} | j                  D ]6  }|\  }	}
}}}}| j!                  ||||	dz   |
z   «      }|j                  |«       Œ8 |S )	Nr   rG   r%   rD   zTrack %dÚmiddle)Úalignú
)r/   r   rN   r   r   r   r   r   r   r   Úcornsilkr+   r   Úyellowr   r   rV   )r    rP   r   r   ÚtrkÚwidrU   Úsr=   r1   r2   r3   r   r4   r5   s                  r!   ÚdrawzEventCalendar.draw—   sk  € Ø×ÑÔÜ‹Gˆð 	
�‰Œd�4—6‘6˜4Ÿ6™6 4§?¡?°1Ñ#5°t·{±{ÀT×EXÑEXÑ7XÔdj×dsÑdsÔtÔuð �F‰F�T—_‘_ QÑ'Ñ'ˆØ�F‰F�T—[‘[Ñ  4×#6Ñ#6Ñ6ˆÜ˜×)Ñ)Ó*ò 	ˆCØ—/‘/ # a¡%Ñ(ˆCÜ�Q˜˜3 × 3Ñ 3¼v¿}¹}ÔMˆAÜ�q˜3˜s™7‘{ A z°CÑ'7¸xÔHˆAØ�E‰E�!ŒHØ�E‰E�!ŒHØ�C‘‰Að	ð ×&Ñ&ò 	ˆDØ>BÑ;ˆU�G˜W c¨5°(Ø× Ñ  ¨°'¸5À4¹<È'Ñ;QÓRˆAØ�E‰E�!�Hð	ð ˆr#   N)Ú__name__Ú
__module__Ú__qualname__r"   r/   r*   r)   r'   rB   rV   r`   © r#   r!   r   r      s,   „ ò ò2Fò(9ò4ò
òòóBr#   r   c                  ó  — t        dd«      } t        «       }d|_        d|_        g d¢|_        d|_        | j                  |«       dD ]?  }| j                  |«      }t        d|z  d	«      j                  |«       t        d
|z  «       ŒA y)z3Make a conference event for day 1 of UP Python 2003i�  éÈ   é2   é   )B)z1Keynote: Why design another programming language?zGuido van RossumNr%   ç      "@ç      ð?)zSiena Web Service ArchitecturezMarc-Andre Lemburgr%   r%   ç      %@ç      ø?)zExtreme Programming in PythonzChris Withersé   r%   rk   rl   )zPattern Experiences in C++zMark Radfordé   r%   rk   rl   )z"What is the Type of std::toupper()zGabriel Dos Reisé   r%   rk   rl   )z6Linguistic Variables: Clear Thinking with Fuzzy Logic zWalter Banksé   r%   rk   rl   )ú0lunch, short presentations, vendor presentationsÚ Nr%   ç      (@ç       @)zCORBA? Isn't that obsoletezDuncan Grisbyr%   r%   ç      ,@rl   )zPython Design PatternsúDuncan Boothrm   r%   ru   rl   )z*Inside Security Checks and Safe ExceptionsúBrandon Brayrn   r%   ru   rl   )zStudying at a DistanceúCPanel Discussion, Panel to include Alan Lenton & Francis Glassborowro   r%   ru   rl   )zRCoding Standards - Given the ANSI C Standard why do I still need a coding StandardúRandy Marquesrp   r%   ru   rl   )zRESTful PythonzHamish Lawsonr%   r%   ç      0@rl   )z(Parsing made easier - a radical old ideazAndrew Koenigrm   r%   rz   rl   )zC++ & MultimethodszJulian Smithrn   r%   rz   rl   )zC++ ThreadingzKevlin Henneyro   r%   rz   rl   )zThe Organisation Strikes BackzAlan Griffiths & Sarah Leesrp   r%   rz   rl   )úBirds of a Feather meetingrr   Nr%   ç     €1@rt   )zKeynote: In the Spirit of CzGreg ColvinNrm   ri   rj   )z6The Infinite Filing Cabinet - object storage in PythonzJacob Hallenr%   rm   rk   rl   )z>Introduction to Python and Jython for C++ and Java ProgrammerszAlex Martellirm   rm   rk   rl   )z#Template metaprogramming in HaskellzSimon Peyton Jonesrn   rm   rk   rl   )zQPlenty People Programming: C++ Programming in a Group, Workshop with a differencezNico Josuttisro   rm   rk   rl   )z4Design and Implementation of the Boost Graph LibraryzJeremy Siekrp   rm   rk   rl   )rq   rr   Nrm   rs   rt   )z5Building GUI Applications with PythonCard and PyCrustz	Andy Toddr%   rm   ru   rl   )zIntegrating Python, C and C++rv   rm   rm   ru   rl   )z!Secrets and Pitfalls of Templatesz$Nicolai Josuttis & David Vandevoordern   rm   ru   rl   )zBeing a Mentorrx   ro   rm   ru   rl   )zThe Embedded C Extensions to CzWillem Wakkerrp   rm   ru   rl   )zLightning Talksz
Paul Brianr%   rm   rz   rl   )z'Scripting Java Applications with JythonzAnthony Edenrm   rm   rz   rl   )z5Metaprogramming and the Boost Metaprogramming LibraryúDavid Abrahamsrn   rm   rz   rl   )z6A Common Vendor ABI for C++ -- GCC's why, what and notz!Nathan Sidwell & Gabriel Dos Reisro   rm   rz   rl   )zThe Timing and Cost of ChoiceszHubert Matthewsrp   rm   rz   rl   )r{   rr   Nrm   r|   rt   )z.Keynote: The Cost of C &amp; C++ CompatibilityzAndy KoenigNrn   ri   rj   )z4Prying Eyes: Generic Observer Implementations in C++úAndrei Alexandrescur%   rm   rk   rl   )z.The Roadmap to Generative Programming With C++zUlrich Eiseneckerrm   rm   rk   rl   )z=Design Patterns in C++ and C# for the Common Language Runtimerw   rn   rm   rk   rl   )z@Extreme Hour (XH): (workshop) - Jutta Eckstein and Nico JosuttiszJutta Ecsteinro   rm   rk   rl   )z.The Lambda Library : Unnamed Functions for C++zJaako Jarvirp   rm   rk   rl   )rq   rr   Nrn   rs   rt   )zReflective MetaprogrammingzDaveed Vandevoorder%   rn   ru   rl   )z7Advanced Template Issues and Solutions (double session)zHerb Sutterrm   rn   ru   rn   )z/Concurrent Programming in Java (double session)zAngelika Langerrn   rn   ru   rn   )z)What can MISRA-C (2nd Edition) do for us?zChris Hillsro   rn   ru   rl   )z(C++ Metaprogramming Concepts and ResultszWalter E Brownrp   rn   ru   rl   )z3Binding C++ to Python with the Boost Python Libraryr}   r%   rn   rz   rl   )zHUsing Aspect Oriented Programming for Enterprise Application IntegrationzArno Schmidmeierro   rn   rz   rl   )zDefective C++zMarc Paternorp   rn   rz   rl   )z.Speakers' Banquet & Birds of a Feather meetingrr   Nrn   r|   rt   )z=Keynote: The Internet, Software and Computers - A Report CardzAlan LentonNro   ri   rj   )zEMulti-Platform Software Development; Lessons from the Boost librarieszBeman Dawesr%   rp   rk   rl   )zThe Stability of the C++ ABIzSteve Clamagerm   rp   rk   rl   )zJGeneric Build Support - A Pragmatic Approach to the Software Build Processry   rn   rp   rk   rl   )z0How to Handle Project Managers: a survival guidez	Barb Byroro   rp   rk   rl   )zlunch, ACCU AGMrr   Nrp   rs   rt   )zESauce: An OO recursive descent parser; its design and implementation.z
Jon Jaggerr%   rp   ru   rl   )zKGNIRTS ESAC REWOL -  Bringing the UNIX filters to the C++ iostream library.zJC van Winkelrm   rp   ru   rl   )z Pattern Writing: Live and DirectzFrank Buschmann & Kevlin Henneyrn   rp   ru   g      @)z5The Future of Programming Languages - A Goldfish BowlzFrancis Glassborow and friendsrn   rp   ru   rl   )zSHoney, I Shrunk the Threads: Compile-time checked multithreaded transactions in C++r~   r%   rp   rz   rl   )z#Fun and Functionality with FunctorszLois Goldthwaiterm   rp   rz   rl   )zAgile Enough?zAlan Griffithsro   rp   rz   rl   )z+Conference Closure: A brief plenary sessionrr   Nrp   r|   rD   r%   )Úpdfzeventcal.%sÚwbzsaved eventcal.%sN)r   r   r   r   r   r   rN   ÚasStringÚopenÚwriteÚprint)ÚdÚcalÚformatÚouts       r!   Útestr‰   ´   s‹   € ô 	��CÓ€Aä
‹/€CØ€C„EØ€C„Eò`
€C„HðF €C„Gà‡E�Eˆ#„Jð ò ,ˆØ�j‰j˜Ó ˆÜˆ]˜VÑ# TÓ*×0Ñ0°Ô5ÜÐ! FÑ*Õ+ñ,r#   Ú__main__N)Ú__version__Ú__doc__Úreportlab.libr   Úreportlab.graphics.shapesr   r   r   r   Ú$reportlab.graphics.charts.textlabelsr   Úreportlab.graphics.widgetbaser	   r   r‰   ra   rd   r#   r!   ú<module>r‘      sN   ðð €ð	€õ !ß BÓ BÝ 6Ý 0ô_�Fô _òHt,ðl ˆZÒÙ…Fð r#   