�
���gS� � �x � S SK JrJr S SK7 S SKrS SKrS SKrS SKrS SKrS SK r S SK
Jr S SK
Jr Sr
SrSrS rS
rS rS rS
rS rS rS rS rS rS rS rS rS rS rS rS r S r!S4S jr"S r#S r$S r%S r&S r'S! r(S" r)S# r*S$ r+S% r,S& r-S' r.S( r/S) r0S* r1S+ r2S, r3S- r4S. r5S/ r6S0 r7S1 r8S2 r9S3 r:g)5� )�utils�os_utils)�*N)�core_install)�dcheck�� �2 � c �X � SS K nSS Kn U R S U R S 4n[ UR U5 S- 5 nUR UR
XQS5 / SQ/5 nUR USS2SS24 5 nUS S- nUS S- n UR U* U /5 U- R S UR X�/5 U- R S UR U* U * /5 U- R S UR X�* /5 U- R S /n
U
Vs/ s H o�S PM nnU V
s/ s H o�S:� d M
U
PM nn
U V
s/ s H o�S: d M
U
PM nn
U
Vs/ s H o�S PM nnU Vs/ s H
nUS:� d M UPM nnU Vs/ s H
nUS: d M UPM nn[ U5 n[ U5 n[ U5 n[ U5 n[ [ UU-
5 5 n[ [ UU-
5 5 nUR SS[ US- U-
5 /SS[ US- U -
5 // SQ/5 nUR U5 UR U5 - SS2S S 24 nUR U UUU4UR S9nU$ s snf s sn
f s sn
f s snf s snf s snf )Nr � � � �?)r r r � �?)�flags)�numpy�cv2�shape�tuple�array�vstack�getRotationMatrix2D�matrix�A�max�min�int�abs�
warpAffine�INTER_LINEAR)�image�angle�npr �
image_size�image_center�rot_mat�rot_mat_notranslate�image_w2�image_h2�rotated_coords�pt�x_coords�x�x_pos�x_neg�y_coords�y�y_pos�y_neg�right_bound�
left_bound� top_bound� bot_bound�new_w�new_h� trans_mat�
affine_mat�results �(/usr/share/hplip/base/imageprocessing.py�rotate_imager= 4 s� � ���� �+�+�a�.�%�+�+�a�.�1�J�����*�-��1�2�L� �i�i� � � ��c� :�I�F��G� �)�)�G�A�a�C��1��H�$5�6�� �!�}�s�"�H��!�}�s�"�H�
���H�9�x�(� )�,?� ?�B�B�1�E� ���H�(� )�,?� ?�B�B�1�E� ���H�9�x�i�(� )�,?� ?�B�B�1�E� ���H�i�(� )�,?� ?�B�B�1�E� �N� !/�/��"�1���H�/� �*��1��E�Q��E�*� �*��1��E�Q��E�*� .�/��"�1���H�/� �*��1�A��E�Q��E�*� �*��1�A��E�Q��E�*��e�*�K��U��J��E�
�I��E�
�I���K�*�,�-�.�E���I� �)�*�+�E� � � �
�A�s�5�3�;��)�*�+�
�A�s�5�3�;��)�*�+��� �I� �)�)�I�&����7�);�;�Q�q�S�!�V�D�J� �^�^�
�� ������ � �F� �M��E 0��*��*��/��*��*s<