[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