00001 /* 00002 * Copyright (C) 2003-2005 The Pentagram Team 00003 * 00004 * This program is free software; you can redistribute it and/or modify 00005 * it under the terms of the GNU General Public License as published by 00006 * the Free Software Foundation; either version 2 of the License, or 00007 * (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 00016 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00017 */ 00018 00019 #include "pent_include.h" 00020 00021 #include "GumpShapeArchive.h" 00022 #include "Rect.h" 00023 #include "IDataSource.h" 00024 00025 DEFINE_RUNTIME_CLASSTYPE_CODE(GumpShapeArchive,ShapeArchive); 00026 00027 GumpShapeArchive::~GumpShapeArchive() 00028 { 00029 for (unsigned int i = 0; i < gumpItemArea.size(); ++i) 00030 delete gumpItemArea[i]; 00031 gumpItemArea.clear(); 00032 } 00033 00034 void GumpShapeArchive::loadGumpage(IDataSource* ds) 00035 { 00036 unsigned int count = ds->getSize() / 8; 00037 gumpItemArea.resize(count+1); 00038 for (unsigned int i = 1; i <= count; ++i) 00039 { 00040 int x, y, w, h; 00041 x = static_cast<sint16>(ds->read2()); 00042 y = static_cast<sint16>(ds->read2()); 00043 w = static_cast<sint16>(ds->read2()) - x; 00044 h = static_cast<sint16>(ds->read2()) - y; 00045 gumpItemArea[i] = new Pentagram::Rect(x, y, w, h); 00046 } 00047 } 00048 00049 Pentagram::Rect* GumpShapeArchive::getGumpItemArea(uint32 shapenum) 00050 { 00051 if (shapenum >= gumpItemArea.size()) return 0; 00052 return gumpItemArea[shapenum]; 00053 }