Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37861515
en ru br
Репозитории ALT
5.1: 2.0.0-alt2.1
4.1: 2.0.0-alt2.1
4.0: 2.0.0-alt0.1
www.altlinux.org/Changes

Группа :: Разработка/Python
Пакет: python-module-pyemf

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: pyemf-2.0.0.patch
Скачать


--- pyemf.py.orig	2006-01-01 17:00:35 +0300
+++ pyemf.py	2007-10-08 00:01:22 +0400
@@ -501,6 +501,17 @@ MWT_IDENTITY      = 1
 MWT_LEFTMULTIPLY  = 2
 MWT_RIGHTMULTIPLY = 3
 
+## added by frob
+# GdiComment values:
+GDICOMMENT_IDENTIFIER = 0x43494447
+GDICOMMENT_WINDOWS_METAFILE = 0x80000001
+GDICOMMENT_BEGINGROUP = 2
+GDICOMMENT_ENDGROUP = 3
+GDICOMMENT_MULTIFORMATS = 0x40000004
+GDICOMMENT_UNICODE_STRING = 0x40
+GDICOMMENT_UNICODE_END = 0x80
+EPS_SIGNATURE = 0x46535045
+## end of frob addition
 
 def _round4(num):
     """Round to the nearest multiple of 4 greater than or equal to the
@@ -866,7 +877,8 @@ class _EMR_UNKNOWN(object): # extend fro
             self.iType=itype
             self.nSize=nsize
         else:
-            (self.iType,self.nSize)=struct.unpack("<ii",8)
+            data = fh.read(8)
+            (self.iType,self.nSize)=struct.unpack("<ii",data)
         if self.nSize>8:
             self.datasize=self.nSize-8
             self.data=fh.read(self.datasize)
@@ -1737,7 +1749,41 @@ class _EMR:
         emr_id=68
         pass
 
+## Added by frob
+    class _GDICOMMENT(_EMR_UNKNOWN):
+        """Comment can contain a lot of significant information."""
+        emr_id=70
+        emr_typedef=[
+                ('i','DataSize'),
+                ('i','Ident'), ## for public comments has to be always GDICOMMENT_IDENTIFIER
+                ('i','iComment') ## encode type of comment
+                ]
 
+        def __init__(self):
+            _EMR_UNKNOWN.__init__(self)
+##            if iComment == GDICOMMENT_WINDOWS_METAFILE:
+##                ('i','nVersion'),
+##                ('i','nChecksum'),
+##                ('i','fFlags'),
+##                ('i','cbWinMetaFile') ## size of embedded WMF
+
+##                if iComment == GDICOMMENT_BEGINGROUP:
+##                    ('i','rclBox_left'),
+##                    ('i','rclBox_top'),
+##                    ('i','rclBox_right'),
+##                    ('i','rclBox_bottom'),
+##                    ('i','nDescription') ## Num of chars in optional Unicode description
+##                if iComment == GDICOMMENT_ENDGROUP:
+##                    pass                ## there is no more fields for EndGroup, just 'Ident' and 'iComment'
+                
+##                if iComment == GDICOMMENT_MULTIFORMATS:
+##                    ('i','rclBox_left'),
+##                    ('i','rclBox_top'),
+##                    ('i','rclBox_right'),
+##                    ('i','rclBox_bottom'),
+##                    ('i','nFormats'),  ## numb of formats in the comment
+##                    (EMRFORMAT aemrformat[1]) ## array of EMRFORMAT structures
+        
 #define EMR_GDICOMMENT	70
 #define EMR_FILLRGN	71
 #define EMR_FRAMERGN	72
@@ -2123,6 +2169,18 @@ integer coordinates.
                 int(self.dc.width/100.0*self.dc.ref_pixelwidth/self.dc.ref_width),
                 int(self.dc.height/100.0*self.dc.ref_pixelheight/self.dc.ref_height))
 
+    def loadmem(self,membuf=None):
+        """
+Read an existing buffer with EMF file.  If any records exist in the current
+object, they will be overwritten by the records from this buffer.
+
+@param membuf: buffer to load
+@type membuf: string
+@returns: True for success, False for failure.
+@rtype: Boolean
+        """
+        fh = StringIO(membuf)
+        self._load(fh)
 
     def load(self,filename=None):
         """
@@ -2139,8 +2197,11 @@ object, they will be overwritten by the 
 
         if self.filename:
             fh=open(self.filename)
+            self._load(fh)
+
+    def _load(self,filehandler=None):
             self.records=[]
-            self._unserialize(fh)
+            self._unserialize(filehandler)
             self.scaleheader=False
             # get DC from header record
             self.dc.getBounds(self.records[0])
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin