Blender V2.61 - r43446

GHOST_EventDragnDrop.h

Go to the documentation of this file.
00001 /*
00002  * ***** BEGIN GPL LICENSE BLOCK *****
00003  *
00004  * This program is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU General Public License
00006  * as published by the Free Software Foundation; either version 2
00007  * of the License, or (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software Foundation,
00016  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00017  *
00018  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
00019  * All rights reserved.
00020  *
00021  * The Original Code is: all of this file.
00022  *
00023  * Contributor(s): Damien Plisson 11/2009
00024  *
00025  * ***** END GPL LICENSE BLOCK *****
00026  */
00027 
00033 #ifndef _GHOST_EVENT_DRAGNDROP_H_
00034 #define _GHOST_EVENT_DRAGNDROP_H_
00035 
00036 #include "GHOST_Event.h"
00037 extern "C" {
00038 #include "IMB_imbuf.h"
00039 #include "IMB_imbuf_types.h"
00040 };
00041 
00070 class GHOST_EventDragnDrop : public GHOST_Event
00071 {
00072 public:
00083     GHOST_EventDragnDrop(GHOST_TUns64 time,
00084                          GHOST_TEventType type,
00085                          GHOST_TDragnDropTypes dataType,
00086                          GHOST_IWindow* window,
00087                          int x, int y, GHOST_TEventDataPtr data)
00088         : GHOST_Event(time, type, window)
00089     {
00090         m_dragnDropEventData.x = x;
00091         m_dragnDropEventData.y = y;
00092         m_dragnDropEventData.dataType = dataType;
00093         m_dragnDropEventData.data = data;
00094         m_data = &m_dragnDropEventData;
00095     }
00096     
00097     ~GHOST_EventDragnDrop()
00098     {
00099         //Free the dropped object data
00100         if (m_dragnDropEventData.data == NULL)
00101             return;
00102         
00103         switch (m_dragnDropEventData.dataType) {
00104             case GHOST_kDragnDropTypeBitmap:
00105                 IMB_freeImBuf((ImBuf*)m_dragnDropEventData.data);
00106                 break;
00107             case GHOST_kDragnDropTypeFilenames:
00108             {
00109                 GHOST_TStringArray *strArray = (GHOST_TStringArray*)m_dragnDropEventData.data;
00110                 int i;
00111                 
00112                 for (i=0;i<strArray->count;i++)
00113                     free(strArray->strings[i]);
00114                 
00115                 free(strArray);
00116             }
00117                 break;
00118             case GHOST_kDragnDropTypeString:
00119                 free(m_dragnDropEventData.data);
00120             break;
00121 
00122             default:
00123                 break;
00124         }
00125     }
00126     
00127     
00128 
00129 protected:
00131     GHOST_TEventDragnDropData m_dragnDropEventData;
00132 };
00133 
00134 #endif // _GHOST_EVENT_DRAGNDROP_H_
00135