summaryrefslogtreecommitdiff
path: root/plugins/Popup/src/effects.cpp
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2012-05-15 10:38:20 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2012-05-15 10:38:20 +0000
commit48540940b6c28bb4378abfeb500ec45a625b37b6 (patch)
tree2ef294c0763e802f91d868bdef4229b6868527de /plugins/Popup/src/effects.cpp
parent5c350913f011e119127baeb32a6aedeb4f0d33bc (diff)
initial commit
git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Popup/src/effects.cpp')
-rw-r--r--plugins/Popup/src/effects.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/plugins/Popup/src/effects.cpp b/plugins/Popup/src/effects.cpp
new file mode 100644
index 0000000000..64ac46b16f
--- /dev/null
+++ b/plugins/Popup/src/effects.cpp
@@ -0,0 +1,94 @@
+/*
+Popup Plus plugin for Miranda IM
+
+Copyright © 2002 Luca Santarelli,
+ © 2004-2007 Victor Pavlychko
+ © 2010 MPK
+ © 2010 Merlin_de
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+===============================================================================
+
+File name : $HeadURL: http://svn.miranda.im/mainrepo/popup/trunk/src/effects.cpp $
+Revision : $Revision: 1610 $
+Last change on : $Date: 2010-06-23 00:55:13 +0300 (Ср, 23 июн 2010) $
+Last change by : $Author: Merlin_de $
+
+===============================================================================
+*/
+
+#include "headers.h"
+
+class MyTestEffect;
+HANDLE hSquareFad;
+
+class MyTestEffect: public IPopupPlusEffect
+{
+protected:
+ int w, h;
+ int alpha0, alpha1;
+ int frameCount;
+ int frame;
+
+ int stage;
+ int alpha;
+
+public:
+ virtual void beginEffect(int w, int h, int alpha0, int alpha1, int frameCount)
+ {
+ this->w = w;
+ this->h = h;
+ this->alpha0 = alpha0;
+ this->alpha1 = alpha1;
+ this->frameCount = frameCount;
+ }
+ virtual void beginFrame(int frame)
+ {
+ this->frame = frame;
+ stage = (frame*2 > frameCount) ? 1 : 0;
+ if (stage == 0)
+ {
+ alpha = alpha0 + (alpha1 - alpha0) * frame * 2 / frameCount;
+ } else
+ {
+ alpha = alpha0 + (alpha1 - alpha0) * (frame * 2 - frameCount) / frameCount;
+ }
+ }
+ virtual int getPixelAlpha(int x, int y)
+ {
+ if (stage == 0)
+ {
+ if ((x/16+y/16) % 2) return alpha0;
+ return alpha;
+ } else
+ {
+ if ((x/16+y/16) % 2) return alpha;
+ return alpha1;
+ }
+ }
+ virtual void endFrame() {}
+ virtual void endEffect() {}
+ virtual void destroy() { delete this; }
+};
+
+//template<class T> static int svcCreateEffect(WPARAM, LPARAM) { return (int)(new T); }
+static INT_PTR svcCreateEffect_MyTestEffect(WPARAM, LPARAM) { return (INT_PTR)(new MyTestEffect); }
+
+void PopupEfectsInitialize()
+{
+ hSquareFad = CreateServiceFunction(MS_POPUP_CREATEVFX "Square fading", svcCreateEffect_MyTestEffect);
+ CallService(MS_POPUP_REGISTERVFX, 0, (LPARAM)"Square fading");
+}