#
6d9c0146 |
| 11-Aug-2020 |
Adrien Destugues <pulkomandy@pulkomandy.tk> |
BGradient: fix assignment operator, add copy constructor
The BGradient class is a bit strange as it can store any gradient on its own, butonly the subclasses allow to set some of the fields.
In the
BGradient: fix assignment operator, add copy constructor
The BGradient class is a bit strange as it can store any gradient on its own, butonly the subclasses allow to set some of the fields.
In the asignment operator, the non-base data (which is in an union) was not copied over.
More importantly, the missing copy constructor led to the default implementation being used, and BList (used for the color stops) was being copied using its default copy constructor, resulting in the two BGradient (original and copy) poinitng to the same stops data. Heap corruption resulted whenever one of them was deleted.
Having a working copy ocnstructor fixes this. The alternative is making the copy constructor private or protected to make sure gradients are not copied, since normally you'd copy only the subclasses, preserving the C++ type. However there is nothing enforcing that, and manipulating a BGradient copied from a subclass works just fine.
Change-Id: I28e733eb8a2970b76ae623eabb75ef8435f508af Reviewed-on: https://review.haiku-os.org/c/haiku/+/3144 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
show more ...
|
#
36ef16bf |
| 28-May-2020 |
X512 <danger_mail@list.ru> |
BGradient: add Flatten, Unflatten methods
Change-Id: I861bab8ae19628d34297c294fd6ce3e5b6c82b34 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2827 Reviewed-by: waddlesplash <waddlesplash@gmail.c
BGradient: add Flatten, Unflatten methods
Change-Id: I861bab8ae19628d34297c294fd6ce3e5b6c82b34 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2827 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
show more ...
|
#
89208c77 |
| 27-Aug-2009 |
Stephan Aßmus <superstippi@gmx.de> |
Finished unifying the Interface Kit headers: * Fixed copyrights (puncuation and capitalization, removed authors from headers) * Updated indentation style * Unified pointer/reference style * Re-orde
Finished unifying the Interface Kit headers: * Fixed copyrights (puncuation and capitalization, removed authors from headers) * Updated indentation style * Unified pointer/reference style * Re-ordered some methods for better grouping where it could be done (abd adopted source accordingly) * Small coding style fixes here and there
No functional change intended.
+alphabranch
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32745 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
2d6e4353 |
| 26-Aug-2009 |
Stephan Aßmus <superstippi@gmx.de> |
* Updated indentation style * Added warning about this being experimental API.
+alphabranch
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32695 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
64eb49fd |
| 15-Feb-2009 |
Stephan Aßmus <superstippi@gmx.de> |
* Cleanup in the Gradient department. No fuctional change. Renamed BGradient::color_step to BGradient::ColorStop as it's called everywhere else. Also renamed BGradient::gradient_type to just BG
* Cleanup in the Gradient department. No fuctional change. Renamed BGradient::color_step to BGradient::ColorStop as it's called everywhere else. Also renamed BGradient::gradient_type to just BGradient::Type. Renamed BGradient::Type() to GetType(). * Simplification of method names in Painter.cpp. Some not yet complete and yet inactive code to accelerate vertical gradients (bypassing AGG for this special case).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29214 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
52de6dce |
| 08-Nov-2008 |
Stephan Aßmus <superstippi@gmx.de> |
Moved the gradient_type and color_step structs into the BGradient class/namespace. Renamed the B_GRADIENT_* types to TYPE_* as the context is already given.
git-svn-id: file:///srv/svn/repos/haiku/
Moved the gradient_type and color_step structs into the BGradient class/namespace. Renamed the B_GRADIENT_* types to TYPE_* as the context is already given.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28564 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
b2411d9a |
| 08-Nov-2008 |
Stephan Aßmus <superstippi@gmx.de> |
System headers need to have "_" prepended in their header guards.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28560 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
991547ef |
| 14-Oct-2008 |
Stephan Aßmus <superstippi@gmx.de> |
Patch by Artur Wyszynski: * Implemented BGradient, BGradientLinear, BGradientRadial, BGradientDiamond, BGradientConic and BGradientRadialFocus new Interface Kit classes. * Implemented all the (AG
Patch by Artur Wyszynski: * Implemented BGradient, BGradientLinear, BGradientRadial, BGradientDiamond, BGradientConic and BGradientRadialFocus new Interface Kit classes. * Implemented all the (AGG-based) backend necessary in the app_server to render gradients (Painter, DrawingEngine) * app_server/View can convert a BGradient layout to screen coordinates. * Added BGradient methods of the Fill* methods in BView. * Implemented a test app and added it to the image as a demo. * Adopted Icon-O-Matic and libs/icon in order to avoid clashing with the new BGradient class. Re-use some parts where possible.
Awesome work, Artur! Thanks a lot. Now a more modern looking GUI has just become much easier to implement! :-)
TODO: * Remove the need to have gradient type twice in the app_server protocol. * Refactor some parts of the patch to remove duplicated code (Painter, DrawingEngine). * Adopt the BPicture protocol to know about BGradients. * Review some parts of the BArchivable implementation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28109 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|