root/trunk/Mask.h

Revision 14, 2.9 kB (checked in by sagrer, 4 months ago)

Поковырял код на предмет понять "где что есть". Заодно добавил везде шапку и вбил дополнительно в конфиг проекта те модули, которые вбиты не были - чтобы можно было быстро открыть любой файл через окно менеджера проекта.

Line 
1 ///////////////////////////////////////////////////////////
2 //                        TexGen                         //
3 //          утилита для подготовки текстур рельефа       //
4 //               для игры Проклятые Земли                //
5 //           Copyright (C) 2007-2008 Gipat Group         //
6 //              Распространяется на условиях             //
7 //    Gipat Group's opened EI-editor-utility license     //
8 //                      версии 1.0                       //
9 //                                                       //
10 //                  www.gipatgroup.org                   //
11 ///////////////////////////////////////////////////////////
12
13 //К работе над данным файлом приложили руки, ноги.... короче аффтары:
14 // 1) Снайпер (sniper-rifle@rambler.ru)
15
16 ////////////////////////////////////////////////////////////////////////
17
18 //---------------------------------------------------------------------------
19
20 #ifndef MaskH
21 #define MaskH
22
23 #include <dstring.h>
24 #include <StrUtils.hpp>
25 #include <SysUtils.hpp>
26 #include <stdio.h>
27 //---------------------------------------------------------------------------
28 class CTileMask
29 {
30 //Формат файла маски(*.msk):
31 // 2 байта:  заголовок (TM)
32 // 1 байт:   версия файла маски (0)
33 // 4 байта:  длина в пикселях  {W}
34 // 4 байта:  высота в пикселях {H}             //Длина т.н. заголовка: 11 байт
35 // W*H*3 байта: массив элементов типа "точка"
36 // 4 байта:  длина текста комментария {L}
37 // L байт:   текст комментария, либо теги
38 //
39 // Элемент типа "точка":
40 // 6 бит: А, 2 бита - младшие разряды D
41 // 6 бит: B, 2 бита - средние разряды D
42 // 6 бит: C, 2 бита - старшие разряды D
43 private:
44         byte *buf; //buf - весь файл маски. 3 байта на точку. Используется для хранения на винчестере.
45         byte *WorkData; //Несжатые рабочие данные - опимальная скорость доступа, 4 байта на точку.
46         int BufLen;
47         int Buf2Len;
48         int W, H;
49         byte MaskVersion;
50         byte HeadLen;
51 public:
52         int Width(){return W;}
53         int Height(){return H;}
54         CTileMask(){BufLen=Buf2Len=W=H=0;buf=NULL; WorkData=NULL; MaskVersion = 0;HeadLen = 11;}
55         ~CTileMask(){Clear();ClearW();}
56         void LoadMask(AnsiString FileName);
57         void SaveMask(AnsiString FileName);
58         void GetPoint(int X, int Y, byte *dwDest);
59         void SetPoint(int X, int Y, byte *dwSrc);
60         void GetPointW(int X, int Y, byte *dwDest);
61         void SetPointW(int X, int Y, byte *dwSrc);
62         void NewMask(int szW, int szH, bool Fill=true);
63         void Uncompress();
64         void Compress();
65         void NormalizeW(int X, int Y);//см. ниже
66         int CheckSumW(int X, int Y);  //Имеет только W-вариант, ибо нефиг.
67         void Clear(){if(BufLen>0){delete [] buf;BufLen=W=H=0;buf=NULL;}}
68         void ClearW(){if(Buf2Len>0){delete [] WorkData; Buf2Len=0; WorkData=NULL;}}
69        
70 };
71 //---------------------------------------------------------------------------
72 #endif
Note: See TracBrowser for help on using the browser.