← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2365: add a function to merge icons

 

------------------------------------------------------------
revno: 2365
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Sun 2010-12-26 21:26:00 +0100
message:
  add a function to merge icons
added:
  dwt/include/dwt/util/GDI.h
  dwt/src/util/GDI.cpp


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== added file 'dwt/include/dwt/util/GDI.h'
--- dwt/include/dwt/util/GDI.h	1970-01-01 00:00:00 +0000
+++ dwt/include/dwt/util/GDI.h	2010-12-26 20:26:00 +0000
@@ -0,0 +1,43 @@
+/*
+  DC++ Widget Toolkit
+
+  Copyright (c) 2007-2010, Jacek Sieka
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification,
+  are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright notice,
+        this list of conditions and the following disclaimer.
+      * Redistributions in binary form must reproduce the above copyright notice,
+        this list of conditions and the following disclaimer in the documentation
+        and/or other materials provided with the distribution.
+      * Neither the name of the DWT nor the names of its contributors
+        may be used to endorse or promote products derived from this software
+        without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef DWT_UTIL_GDI_H
+#define DWT_UTIL_GDI_H
+
+#include <dwt/CanvasClasses.h>
+
+namespace dwt { namespace util {
+
+BitmapPtr merge(const std::vector<IconPtr>& icons);
+
+} }
+
+#endif

=== added file 'dwt/src/util/GDI.cpp'
--- dwt/src/util/GDI.cpp	1970-01-01 00:00:00 +0000
+++ dwt/src/util/GDI.cpp	2010-12-26 20:26:00 +0000
@@ -0,0 +1,55 @@
+/*
+  DC++ Widget Toolkit
+
+  Copyright (c) 2007-2010, Jacek Sieka
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without modification,
+  are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright notice,
+        this list of conditions and the following disclaimer.
+      * Redistributions in binary form must reproduce the above copyright notice,
+        this list of conditions and the following disclaimer in the documentation
+        and/or other materials provided with the distribution.
+      * Neither the name of the DWT nor SmartWin++ nor the names of its contributors
+        may be used to endorse or promote products derived from this software
+        without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <dwt/util/GDI.h>
+
+#include <dwt/util/check.h>
+
+namespace dwt { namespace util {
+
+BitmapPtr merge(const std::vector<IconPtr>& icons) {
+	dwtassert(!icons.empty(), _T("No icons to merge"));
+	const Point size = icons[0]->getSize();
+
+	UpdateCanvas screen_canvas(reinterpret_cast<HWND>(0));
+	BitmapPtr ret(new Bitmap(::CreateCompatibleBitmap(screen_canvas.handle(), size.x, size.y)));
+
+	CompatibleCanvas canvas(screen_canvas.handle());
+	Canvas::Selector select(canvas, *ret);
+
+	Rectangle rect(size);
+	for(auto i = icons.cbegin(), iend = icons.cend(); i != iend; ++i)
+		canvas.drawIcon(*i, rect);
+
+	return ret;
+}
+
+} }