Commit Graph

184 Commits

Author SHA1 Message Date
Artur Wieczorek
5ea0a0f5f9 Fixed creating Cairo bitmap from wxBitmap (wxMSW).
Fixed creating wxCairoBitmapData from 32bpp wxBitmap (with and without alpha channel). This also fixes wxCairoRenderer::CreateBitmap method.
1. 32bpp bitmap can represent under MSW either ARGB or RGB bitmap so there is necessary to examine its real contents with wxBitmap::HasAlpha function.
2. ARGB bitmaps are premultiplied and there is not necessary to premultiply them again.
2016-03-24 22:24:54 +01:00
Artur Wieczorek
d6afb66388 Implemented wxCairoRenderer::CreateSubBitmap method. 2016-03-24 22:24:53 +01:00
Artur Wieczorek
e7a9916878 Fixed calculating widths in wxCairoContext::GetPartialTextExtents (wxMSW).
Widths from the beginning of text to the corresponding character should be calculated instead of widths of individual characters.
2016-03-17 21:06:26 +01:00
Artur Wieczorek
e26e8f38b9 Fixed wxCairoContext ctor (wxMSW).
Variable referencing Cairo surface has to be initialized to NULL because otherwise crash can happen in dtor while attempting to destroy the surface.
2016-03-17 20:52:12 +01:00
Artur Wieczorek
3bf30d14fd Implemented GetPartialTextExtents for Cairo context (wxMSW).
This implementation should work fine not only for wxMSW port.
2016-03-16 21:42:37 +01:00
Artur Wieczorek
b8e82accbe Allow creating wxCairoContext from native window (wxMSW).
Implemented new wxCairoContext ctor to allow creating Cairo context in wxCairoRenderer::CreateContextFromNativeWindow.
2016-03-16 21:42:06 +01:00
Artur Wieczorek
1fa4efc47e Implemented measuring context for Cairo renderer (wxMSW). 2016-03-16 21:41:20 +01:00
Artur Wieczorek
07274d7925 Allow creating wxGraphicsContext from memory DC with Cairo renderer (wxMSW).
Not only paint DC but also memory DC can be used as a source to create wxGraphicsContext with Cairo renderer.
2016-03-14 21:03:31 +01:00
Gilbert Pelletier
46df3a1794 Allow creating wxGraphicsContext from cairo_t object (wxMSW).
Input void* parameter of wxCairoRenderer::CreateContextFromNativeContext can represent either DC handle or pointer to cairo_t object. It can be checked if it is a real HDC or not and proper wxCairoContext ctor can be invoked.

Closes #16991.
2016-03-14 21:03:11 +01:00
Paul Cornett
371ee79f88 Avoid wxGraphicsContext offsetting on HiDPI displays
For a typical scale factor of 2, there won't be any odd-width lines,
and for any factor greater than 1.0, it won't be doing what was intended,
so just don't do it. See #17375
2016-02-22 10:25:16 -08:00
Paul Cornett
5524cec193 implement Flush() for wxImage wxGraphicsContext under Cairo and GDI+, see #16694 2015-12-20 10:20:30 -08:00
Paul Cornett
cd27b73237 flush Cairo surface before converting to wxImage 2015-12-20 10:10:04 -08:00
Paul Cornett
27a8d28029 more use of wxOVERRIDE 2015-09-06 17:20:42 -07:00
Vadim Zeitlin
b6e5a0a679 Try to avoid crashing in wxGTK wxCairoContext ctor.
Don't use an uninitialized pointer in wxCairoContext ctor from wxPrinterDC in
wxGTK if retrieving Cairo context of the DC failed, set m_context to NULL in
this case (not sure if this is still not going to crash when used in
cairo_translate() below though).
2015-05-24 02:51:54 +02:00
Dimitri Schoolwerth
8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00
Paul Cornett
7f7c619c85 avoid duplicate initialization and warnings about initialization order
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77877 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-24 03:39:30 +00:00
Vadim Zeitlin
e6a6bc71db Initialize the member at first, make sure it would not cause segementation fault on the platform that not define wxHAS_RAW_BITMAP, the true init and assign function called within it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77868 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-23 17:44:50 +00:00
Vadim Zeitlin
cf5c6861a7 remove these codes. The code could not work correctly under x11. Redesigning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77867 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-23 17:44:47 +00:00
Vadim Zeitlin
72a90d051a store the raw data in bitmap to m_buffer that in wxCairoBitmapData
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77865 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-23 17:44:41 +00:00
Vadim Zeitlin
7d6abbffb8 merge to independent preprocessor to one check.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77864 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-23 17:44:39 +00:00
Vadim Zeitlin
999150a45a let wxCairoContext could create cairo context correctly under x11 in this constructor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77863 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-23 17:44:36 +00:00
Vadim Zeitlin
51309ad50a make x11 dc could get cairo context, so the graphic module could use in x11. This use cairo xlib backend.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77853 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-23 17:44:06 +00:00
Paul Cornett
16601713a4 cairo_image_surface_get_{width,height} have been available in cairo since version 1.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77758 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-23 16:37:15 +00:00
Robin Dunn
fe7301b6b0 Oops, a '{' got lost somewhere from the last commit...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77737 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-19 23:56:13 +00:00
Robin Dunn
b25a6a4bb6 I'm not totally sure when they were added, but the cairo_image_surface_get_[width|height] functions are not available in cairo 1.10.2.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77735 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-19 23:28:43 +00:00
Vadim Zeitlin
a35527e0e1 Fix crash when creating wxGraphicsBitmap from cairo_surface_t.
Initialize m_buffer to avoid crashes when deleting it in Cairo-based
wxGraphicsContext implementation for bitmaps created from the native ones.

Don't leave the bitmap size uninitialized neither, this might not result in
crashes, but is definitely wrong as well.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77718 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-18 00:01:31 +00:00
Vadim Zeitlin
df13791078 Merge wxQT branch into the trunk.
This merges in the latest sources from GSoC 2014 wxQt project with just a few
minor corrections, mostly undoing wrong changes to common files in that branch
(results of a previous bad merge?) and getting rid of whitespace-only changes.
Also remove debug logging from wxGrid.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77455 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-08-24 01:50:11 +00:00
Tim Kosse
b3be8e77be Fix compilation if configured with --disable-printarch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76826 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-07-04 12:43:33 +00:00
Vadim Zeitlin
7ab7ff693b Add wxGraphicsRenderer::GetName() and GetVersion() methods.
Allow the code to determine which underlying technology is used for
implementing wxGraphics API. This is needed by the unit tests to account for
the known differences between platforms and may be useful in other cases.

Closes #16154.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76380 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-04-20 12:45:10 +00:00
Paul Cornett
9b41d18b25 remove unused macro definitions
and limit others to the configurations which use them

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76280 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-04-04 16:44:30 +00:00
Paul Cornett
70ef1e192d Index: src/generic/graphicc.cpp
===================================================================
--- src/generic/graphicc.cpp	(revision 76007)
+++ src/generic/graphicc.cpp	(working copy)
@@ -1569,12 +1569,13 @@
             {
                 const wxUint32 argb = *src++;
 
-                *alpha++ = (argb & 0xff000000) >> 24;
+                const unsigned char a = argb >> 24;
+                *alpha++ = a;
 
                 // Copy the RGB data undoing the pre-multiplication.
-                *dst++ = Unpremultiply(*alpha, (argb & 0x00ff0000) >> 16);
-                *dst++ = Unpremultiply(*alpha, (argb & 0x0000ff00) >>  8);
-                *dst++ = Unpremultiply(*alpha, (argb & 0x000000ff));
+                *dst++ = Unpremultiply(a, argb >> 16);
+                *dst++ = Unpremultiply(a, argb >>  8);
+                *dst++ = Unpremultiply(a, argb);
             }
 
             src = rowStart + stride;


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76015 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-02-25 17:38:34 +00:00
Paul Cornett
48829702f1 Fix referencing of cairo_t returned from wxDCImpl::GetCairoContext().
It was assumed that all callers were going to unref the cairo_t, but that is not
true, so callers that are going to unref it should ref it themselves.
See #15455


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74746 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-09-03 05:37:30 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Paul Cornett
5ca21fe7bf add wxMask::GetBitmap(), closes #9381
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73409 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-01-20 06:28:11 +00:00
Paul Cornett
8edc3a43c7 fix tests for valid pen and brush, broken in r73099
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73134 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-12-05 17:38:30 +00:00
Paul Cornett
ba49d2acf9 simplify code so it always returns the same object
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73099 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-12-02 05:48:24 +00:00
Paul Cornett
46421f2471 clean up wxCairoRenderer initialization mess
Remove unused Unload(), wxCairoCleanUp(), m_loaded and gCairoRenderer, and redundant Load()
and EnsureIsLoaded(). Just call wxCairoInit() directly, and for GTK do nothing at all.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73098 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-12-02 05:11:25 +00:00
Paul Cornett
9f692b010e Remove nearly empty wx/cairo.h header
It does so little now it's not worth having. And it should not have been a public header.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73096 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-12-02 02:28:48 +00:00
Vadim Zeitlin
4c6fdc3503 Fix test for __WXGTK__ in wxCairoContext.
It must be tested with #ifdef, not #if.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72626 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-10-07 22:37:24 +00:00
Vadim Zeitlin
7447d53c35 Implement hatched/stippled pens/brushes in wxGraphicsContext for Cairo.
Refactor the pen/brushes classes to introduce a common base class for them
containing their colour and hatch pattern and stipple bitmap, if any.

And actually create the hatched pattern and use it.

Closes #11981.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71906 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-06-30 23:41:18 +00:00
Paul Cornett
9dc44eff02 support for GTK3
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71894 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-06-30 20:39:06 +00:00
Paul Cornett
6186cb7416 implement wxCairoContext::GetPartialTextExtents for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71855 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-06-24 06:33:07 +00:00
Paul Cornett
ecdfd09516 fix warnings about unreachable return statements
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71684 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-06-07 05:13:19 +00:00
Paul Cornett
f2c757c5cc mark virtual overrides as virtual
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71468 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-05-17 15:46:26 +00:00
Robin Dunn
8b180bded6 Enable access to the native bitmap object wrapped by wxGraphicsBitmap
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71416 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-05-11 22:06:50 +00:00
Robin Dunn
caf1a3aa68 Ensure a 32-bit cairo surface is created if it is needed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71415 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-05-11 22:06:37 +00:00
Vadim Zeitlin
365d11bec3 Fix wxCairoContext creation from wxWindow under MSW.
cairo_win32_surface_create() must be passed the window HDC and not HWND
itself, the old code calling it was broken.

Add WindowHDC object and pass its HDC to this function now to make it work.

Closes #14194.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71209 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-04-16 14:30:02 +00:00
Vadim Zeitlin
16c0096fef Compilation fixes for Cairo-based wxGraphicsContext code under MSW.
Include MSW-specific headers under MSW to fix various compilation problems
under MinGW.

Closes #14194.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71152 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-04-08 18:10:11 +00:00
Vadim Zeitlin
239e6af724 Fix PCH-less compilation of graphicc.cpp under MSW too.
We need to include wx/window.h in all ports, not just wxGTK.

See #14194.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71148 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-04-08 10:10:20 +00:00
Paul Cornett
304c3065c7 use GTKSetPangoAttrs in wxCairoContext
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70477 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-29 08:35:45 +00:00