2 * Copyright (C) 2003-2006 Gabest
3 * http://www.gabest.org
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with GNU Make; see the file COPYING. If not, write to
17 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
18 * http://www.gnu.org/copyleft/gpl.html
30 void RemoveAll() {pa
.RemoveAll(); da
.RemoveAll();}
31 void Add(CPoint p
, int d
) {pa
.Add(p
); da
.Add(d
);}
36 friend class CVobSubFile
;
43 WORD nOffset
[2], nPlane
;
45 char fAligned
; // we are also using this for calculations, that's why it is char instead of bool...
47 RGBQUAD
* orgpal
/*[16]*/,* cuspal
/*[4]*/;
49 bool Alloc(int w
, int h
);
52 BYTE
GetNibble(BYTE
* lpData
);
53 void DrawPixels(CPoint p
, int length
, int colorid
);
61 typedef struct {BYTE pal
:4, tr
:4;} SubPal
;
66 virtual ~CVobSubImage();
68 void Invalidate() {iLang
= iIdx
= -1;}
70 void GetPacketInfo(BYTE
* lpData
, int packetsize
, int datasize
);
71 bool Decode(BYTE
* lpData
, int packetsize
, int datasize
,
74 RGBQUAD
* orgpal
/*[16]*/, RGBQUAD
* cuspal
/*[4]*/,
80 CAutoPtrList
<COutline
>* GetOutlineList(CPoint
& topleft
);
81 int GrabSegment(int start
, COutline
& o
, COutline
& ret
);
82 void SplitOutline(COutline
& o
, COutline
& o1
, COutline
& o2
);
83 void AddSegment(COutline
& o
, CAtlArray
<BYTE
>& pathTypes
, CAtlArray
<CPoint
>& pathPoints
);
86 bool Polygonize(CAtlArray
<BYTE
>& pathTypes
, CAtlArray
<CPoint
>& pathPoints
, bool fSmooth
, int scale
);
87 bool Polygonize(CStringW
& assstr
, bool fSmooth
= true, int scale
= 3);