1 /* 2 Copyright (c) 2013 yvt 3 4 This file is part of OpenSpades. 5 6 OpenSpades is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 OpenSpades is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with OpenSpades. If not, see <http://www.gnu.org/licenses/>. 18 19 */ 20 21 #pragma once 22 23 #include <mutex> 24 #include <vector> 25 26 #include <Core/RefCountedObject.h> 27 28 namespace spades { 29 namespace client { 30 class GameMap; 31 } 32 namespace draw { 33 class SWRenderer; 34 class SWImage; 35 36 class SWFlatMapRenderer { 37 SWRenderer *r; 38 Handle<SWImage> img; 39 Handle<client::GameMap> map; 40 int w, h; 41 std::mutex updateInfoLock; 42 std::vector<uint32_t> updateMap; 43 std::vector<uint32_t> updateMap2; 44 bool volatile needsUpdate; 45 46 uint32_t GeneratePixel(int x, int y); 47 48 public: 49 SWFlatMapRenderer(SWRenderer *r, client::GameMap *); 50 ~SWFlatMapRenderer(); 51 GetImage()52 SWImage *GetImage() { 53 Update(); 54 return img; 55 } 56 57 void Update(bool firstTime = false); 58 void SetNeedsUpdate(int x, int y); 59 }; 60 } 61 } 62