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

G. Allegri giohappy at gmail.com
Mon Jul 9 08:13:07 PDT 2012


The hack is working perfectly!
Tha Atlas plugin seems to be working now ;)

giovanni

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

> 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/20120709/80d323e9/attachment-0001.html>


More information about the Qgis-developer mailing list