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

G. Allegri giohappy at gmail.com
Thu Jul 5 07:39:42 PDT 2012


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/8c07da8b/attachment.html>


More information about the Qgis-developer mailing list