[Qgis-developer] porting the composer QPaintEngine hack to Python?

G. Allegri giohappy at gmail.com
Thu Jul 5 08:54:47 PDT 2012


Thanks to Jef, the hacked engine is exposed throug sip now ;)
I will try it ASAP.

giovanni

2012/7/5 G. Allegri <giohappy at gmail.com>

> I fear it isn't possible (at least with common programming skills!) to
> reproduce it.
> My approach was too naive. The paintEngine instance is a pointer to a
> subclass implementation, and AFACS there's no method to change the flags
> (render features) of an instanciated engine...
>
> giovanni
>
> 2012/7/5 G. Allegri <giohappy at gmail.com>
>
>
>>
>> 2012/7/5 Marco Hugentobler <marco.hugentobler at sourcepole.ch>
>>
>>>  >made by Marco
>>>
>>> made by Jürgen (it fixes the pdf shift on windows).
>>>
>>
>> ops, sorry :)
>>
>>
>>>
>>> Marco
>>>
>>> Am 05.07.2012 16:11, schrieb G. Allegri:
>>>
>>> Vincent highlighted a hack in the composer PDF rendering (made by Marco)
>>> [1].
>>> I was trying to reproduce it in Python, to test if it can solve some
>>> problems in the Atlas plugin.
>>> I thought I could use the QPrinter.setEngines() method [2], to set an
>>> instance of a derived QPaintEngine intitated with the flags provided in the
>>> hack, but this method makes QGis crash. I was doing something like this
>>> (excerpt):
>>>
>>>  paintE = self.getHackedPaintEngine
>>> printE = printer.printEngine()
>>> printer.setEngines(printE,paintE)
>>>
>>>  def getHackedPaintEngine(self):
>>>         class HackEngine(QPaintEngine):
>>>             def __init__(self):
>>>                 QPaintEngine.__init__(self,
>>>                     QPaintEngine.PrimitiveTransform
>>>                   | QPaintEngine.PixmapTransform
>>>                    | QPaintEngine.PatternBrush
>>>                   | QPaintEngine.AlphaBlend
>>>                   | QPaintEngine.PainterPaths
>>>                   | QPaintEngine.Antialiasing
>>>                    | QPaintEngine.BrushStroke
>>>                   | QPaintEngine.ConstantOpacity
>>>                   | QPaintEngine.MaskedBrush
>>>                   | QPaintEngine.BlendModes
>>>                    | QPaintEngine.RasterOpModes
>>>                 )
>>>
>>>  return HackEngine()
>>>
>>>  What alternative way would you suggest to reproduce the hack?
>>> giovanni
>>>
>>>  [1]
>>> https://github.com/qgis/Quantum-GIS/blob/master/src/app/composer/qgscomposer.cpp#L588
>>>  [2]
>>> http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qprinter.html#setEngines
>>>
>>>
>>> _______________________________________________
>>> Qgis-developer mailing listQgis-developer at lists.osgeo.orghttp://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>
>>>
>>>
>>> --
>>> Dr. Marco Hugentobler
>>> Sourcepole -  Linux & Open Source Solutions
>>> Weberstrasse 5, CH-8004 Zürich, Switzerlandmarco.hugentobler at sourcepole.ch http://www.sourcepole.ch
>>> Technical Advisor QGIS Project Steering Committee
>>>
>>>
>>> _______________________________________________
>>> Qgis-developer mailing list
>>> Qgis-developer at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20120705/10c200cd/attachment-0001.html>


More information about the Qgis-developer mailing list