Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXhmikosR <xhmikosr@users.sourceforge.net>2010-04-09 18:12:59 +0400
committerXhmikosR <xhmikosr@users.sourceforge.net>2010-04-09 18:12:59 +0400
commitefbc9d9043ff8ff92716ddd00a5f61412d535593 (patch)
tree8f3e621f756cf1f5b4d64d97964c7e7abd8aaf08 /src/subtitles/Rasterizer.h
parentdf6b139a6d9027156f614b68687e039e3a5854db (diff)
revert r1783
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@1785 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'src/subtitles/Rasterizer.h')
-rw-r--r--src/subtitles/Rasterizer.h233
1 files changed, 116 insertions, 117 deletions
diff --git a/src/subtitles/Rasterizer.h b/src/subtitles/Rasterizer.h
index d9fa2c0ec..6a261fbb6 100644
--- a/src/subtitles/Rasterizer.h
+++ b/src/subtitles/Rasterizer.h
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright (C) 2003-2006 Gabest
* http://www.gabest.org
*
@@ -6,15 +6,15 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
- *
+ *
* This Program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with GNU Make; see the file COPYING. If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
* http://www.gnu.org/copyleft/gpl.html
*
*/
@@ -24,164 +24,163 @@
#include <vector>
#include "../SubPic/ISubPic.h"
#ifdef _VSMOD // patch m004. gradient colors
-#include "STS.h"
+#include "STS.h"
#endif
#ifdef _VSMOD // patch m006. moveable vector clip
class MOD_MOVEVC
{
public:
- // movevc
- bool enable;
- CSize size;
- CPoint pos;
-
- //CSize canvas; // canvas size
- CSize spd; // output canvas size
- CPoint curpos; // output origin point
- int hfull; // full height
- byte* alphamask;
-
- MOD_MOVEVC();
-
- byte GetAlphaValue(int wx, int wy);
- void clear();
+ // movevc
+ bool enable;
+ CSize size;
+ CPoint pos;
+
+ //CSize canvas; // canvas size
+ CSize spd; // output canvas size
+ CPoint curpos; // output origin point
+ int hfull; // full height
+ byte* alphamask;
+
+ MOD_MOVEVC();
+
+ byte GetAlphaValue(int wx,int wy);
+ void clear();
};
#endif
#define PT_MOVETONC 0xfe
#define PT_BSPLINETO 0xfc
-#define PT_BSPLINEPATCHTO 0xfa
+#define PT_BSPLINEPATCHTO 0xfa
class RasterizerNfo
{
public:
- int w;
- int h;
- int spdw;
- int overlayp;
- int pitch;
- DWORD color;
+ int w;
+ int h;
+ int spdw;
+ int overlayp;
+ int pitch;
+ DWORD color;
- int xo;
- int yo;
+ int xo;
+ int yo;
- const DWORD* sw;
- byte* s;
- byte* src;
- DWORD* dst;
+ const DWORD* sw;
+ byte* s;
+ byte* src;
+ DWORD* dst;
#ifdef _VSMOD
- int typ;
- MOD_GRADIENT mod_grad;
- MOD_MOVEVC mod_vc;
+ int typ;
+ MOD_GRADIENT mod_grad;
+ MOD_MOVEVC mod_vc;
#else
- byte* am;
+ byte* am;
#endif
- RasterizerNfo();
+ RasterizerNfo();
};
class Rasterizer
{
- bool fFirstSet;
- CPoint firstp, lastp;
+ bool fFirstSet;
+ CPoint firstp, lastp;
protected:
- BYTE* mpPathTypes;
- POINT* mpPathPoints;
- size_t mPathPoints;
+ BYTE* mpPathTypes;
+ POINT* mpPathPoints;
+ size_t mPathPoints;
private:
- int mWidth, mHeight;
+ int mWidth, mHeight;
- typedef std::pair<unsigned __int64, unsigned __int64> tSpan;
- typedef std::vector<tSpan> tSpanBuffer;
+ typedef std::pair<unsigned __int64, unsigned __int64> tSpan;
+ typedef std::vector<tSpan> tSpanBuffer;
- tSpanBuffer mOutline;
- tSpanBuffer mWideOutline;
- int mWideBorder;
+ tSpanBuffer mOutline;
+ tSpanBuffer mWideOutline;
+ int mWideBorder;
- struct Edge
- {
- int next;
- int posandflag;
- } *mpEdgeBuffer;
- size_t mEdgeHeapSize;
- size_t mEdgeNext;
+ struct Edge {
+ int next;
+ int posandflag;
+ } *mpEdgeBuffer;
+ size_t mEdgeHeapSize;
+ size_t mEdgeNext;
- size_t* mpScanBuffer;
+ size_t* mpScanBuffer;
- typedef unsigned char byte;
+ typedef unsigned char byte;
protected:
- int mPathOffsetX, mPathOffsetY;
- int mOffsetX, mOffsetY;
- int mOverlayWidth, mOverlayHeight;
- byte *mpOverlayBuffer;
+ int mPathOffsetX, mPathOffsetY;
+ int mOffsetX, mOffsetY;
+ int mOverlayWidth, mOverlayHeight;
+ byte *mpOverlayBuffer;
private:
- void _TrashPath();
- void _TrashOverlay();
- void _ReallocEdgeBuffer(int edges);
- void _EvaluateBezier(int ptbase, bool fBSpline);
- void _EvaluateLine(int pt1idx, int pt2idx);
- void _EvaluateLine(int x0, int y0, int x1, int y1);
- static void _OverlapRegion(tSpanBuffer& dst, tSpanBuffer& src, int dx, int dy);
- // helpers
- void Draw_noAlpha_spFF_Body_0(RasterizerNfo& rnfo);
- void Draw_noAlpha_spFF_noBody_0(RasterizerNfo& rnfo);
- void Draw_noAlpha_sp_Body_0(RasterizerNfo& rnfo);
- void Draw_noAlpha_sp_noBody_0(RasterizerNfo& rnfo);
- void Draw_noAlpha_spFF_Body_sse2(RasterizerNfo& rnfo);
- void Draw_noAlpha_spFF_noBody_sse2(RasterizerNfo& rnfo);
- void Draw_noAlpha_sp_Body_sse2(RasterizerNfo& rnfo);
- void Draw_noAlpha_sp_noBody_sse2(RasterizerNfo& rnfo);
- void Draw_Alpha_spFF_Body_0(RasterizerNfo& rnfo);
- void Draw_Alpha_spFF_noBody_0(RasterizerNfo& rnfo);
- void Draw_Alpha_sp_Body_0(RasterizerNfo& rnfo);
- void Draw_Alpha_sp_noBody_0(RasterizerNfo& rnfo);
- void Draw_Alpha_spFF_Body_sse2(RasterizerNfo& rnfo);
- void Draw_Alpha_spFF_noBody_sse2(RasterizerNfo& rnfo);
- void Draw_Alpha_sp_Body_sse2(RasterizerNfo& rnfo);
- void Draw_Alpha_sp_noBody_sse2(RasterizerNfo& rnfo);
+ void _TrashPath();
+ void _TrashOverlay();
+ void _ReallocEdgeBuffer(int edges);
+ void _EvaluateBezier(int ptbase, bool fBSpline);
+ void _EvaluateLine(int pt1idx, int pt2idx);
+ void _EvaluateLine(int x0, int y0, int x1, int y1);
+ static void _OverlapRegion(tSpanBuffer& dst, tSpanBuffer& src, int dx, int dy);
+ // helpers
+ void Draw_noAlpha_spFF_Body_0(RasterizerNfo& rnfo);
+ void Draw_noAlpha_spFF_noBody_0(RasterizerNfo& rnfo);
+ void Draw_noAlpha_sp_Body_0(RasterizerNfo& rnfo);
+ void Draw_noAlpha_sp_noBody_0(RasterizerNfo& rnfo);
+ void Draw_noAlpha_spFF_Body_sse2(RasterizerNfo& rnfo);
+ void Draw_noAlpha_spFF_noBody_sse2(RasterizerNfo& rnfo);
+ void Draw_noAlpha_sp_Body_sse2(RasterizerNfo& rnfo);
+ void Draw_noAlpha_sp_noBody_sse2(RasterizerNfo& rnfo);
+ void Draw_Alpha_spFF_Body_0(RasterizerNfo& rnfo);
+ void Draw_Alpha_spFF_noBody_0(RasterizerNfo& rnfo);
+ void Draw_Alpha_sp_Body_0(RasterizerNfo& rnfo);
+ void Draw_Alpha_sp_noBody_0(RasterizerNfo& rnfo);
+ void Draw_Alpha_spFF_Body_sse2(RasterizerNfo& rnfo);
+ void Draw_Alpha_spFF_noBody_sse2(RasterizerNfo& rnfo);
+ void Draw_Alpha_sp_Body_sse2(RasterizerNfo& rnfo);
+ void Draw_Alpha_sp_noBody_sse2(RasterizerNfo& rnfo);
#ifdef _VSMOD // patch m004. gradient colors
- void Draw_Grad_noAlpha_spFF_Body_0(RasterizerNfo& rnfo);
- void Draw_Grad_noAlpha_spFF_noBody_0(RasterizerNfo& rnfo);
- void Draw_Grad_noAlpha_sp_Body_0(RasterizerNfo& rnfo);
- void Draw_Grad_noAlpha_sp_noBody_0(RasterizerNfo& rnfo);
- void Draw_Grad_Alpha_spFF_Body_0(RasterizerNfo& rnfo);
- void Draw_Grad_Alpha_spFF_noBody_0(RasterizerNfo& rnfo);
- void Draw_Grad_Alpha_sp_Body_0(RasterizerNfo& rnfo);
- void Draw_Grad_Alpha_sp_noBody_0(RasterizerNfo& rnfo);
- void Draw_Grad_noAlpha_spFF_Body_sse2(RasterizerNfo& rnfo);
- void Draw_Grad_noAlpha_spFF_noBody_sse2(RasterizerNfo& rnfo);
- void Draw_Grad_noAlpha_sp_Body_sse2(RasterizerNfo& rnfo);
- void Draw_Grad_noAlpha_sp_noBody_sse2(RasterizerNfo& rnfo);
- void Draw_Grad_Alpha_spFF_Body_sse2(RasterizerNfo& rnfo);
- void Draw_Grad_Alpha_spFF_noBody_sse2(RasterizerNfo& rnfo);
- void Draw_Grad_Alpha_sp_Body_sse2(RasterizerNfo& rnfo);
- void Draw_Grad_Alpha_sp_noBody_sse2(RasterizerNfo& rnfo);
+ void Draw_Grad_noAlpha_spFF_Body_0(RasterizerNfo& rnfo);
+ void Draw_Grad_noAlpha_spFF_noBody_0(RasterizerNfo& rnfo);
+ void Draw_Grad_noAlpha_sp_Body_0(RasterizerNfo& rnfo);
+ void Draw_Grad_noAlpha_sp_noBody_0(RasterizerNfo& rnfo);
+ void Draw_Grad_Alpha_spFF_Body_0(RasterizerNfo& rnfo);
+ void Draw_Grad_Alpha_spFF_noBody_0(RasterizerNfo& rnfo);
+ void Draw_Grad_Alpha_sp_Body_0(RasterizerNfo& rnfo);
+ void Draw_Grad_Alpha_sp_noBody_0(RasterizerNfo& rnfo);
+ void Draw_Grad_noAlpha_spFF_Body_sse2(RasterizerNfo& rnfo);
+ void Draw_Grad_noAlpha_spFF_noBody_sse2(RasterizerNfo& rnfo);
+ void Draw_Grad_noAlpha_sp_Body_sse2(RasterizerNfo& rnfo);
+ void Draw_Grad_noAlpha_sp_noBody_sse2(RasterizerNfo& rnfo);
+ void Draw_Grad_Alpha_spFF_Body_sse2(RasterizerNfo& rnfo);
+ void Draw_Grad_Alpha_spFF_noBody_sse2(RasterizerNfo& rnfo);
+ void Draw_Grad_Alpha_sp_Body_sse2(RasterizerNfo& rnfo);
+ void Draw_Grad_Alpha_sp_noBody_sse2(RasterizerNfo& rnfo);
#endif
public:
- Rasterizer();
- virtual ~Rasterizer();
-
- bool BeginPath(HDC hdc);
- bool EndPath(HDC hdc);
- bool PartialBeginPath(HDC hdc, bool bClearPath);
- bool PartialEndPath(HDC hdc, long dx, long dy);
- bool ScanConvert();
- bool CreateWidenedRegion(int borderX, int borderY);
- void DeleteOutlines();
- bool Rasterize(int xsub, int ysub, int fBlur, double fGaussianBlur);
- int getOverlayWidth();
+ Rasterizer();
+ virtual ~Rasterizer();
+
+ bool BeginPath(HDC hdc);
+ bool EndPath(HDC hdc);
+ bool PartialBeginPath(HDC hdc, bool bClearPath);
+ bool PartialEndPath(HDC hdc, long dx, long dy);
+ bool ScanConvert();
+ bool CreateWidenedRegion(int borderX, int borderY);
+ void DeleteOutlines();
+ bool Rasterize(int xsub, int ysub, int fBlur, double fGaussianBlur);
+ int getOverlayWidth();
#ifdef _VSMOD // patch m004. gradient colors
- CRect Draw(SubPicDesc& spd, CRect& clipRect, byte* pAlphaMask, int xsub, int ysub, const DWORD* switchpts, bool fBody, bool fBorder, int typ, MOD_GRADIENT& mod_grad, MOD_MOVEVC& mod_vc);
+ CRect Draw(SubPicDesc& spd, CRect& clipRect, byte* pAlphaMask, int xsub, int ysub, const DWORD* switchpts, bool fBody, bool fBorder, int typ, MOD_GRADIENT& mod_grad, MOD_MOVEVC& mod_vc);
#else
- CRect Draw(SubPicDesc& spd, CRect& clipRect, byte* pAlphaMask, int xsub, int ysub, const DWORD* switchpts, bool fBody, bool fBorder);
+ CRect Draw(SubPicDesc& spd, CRect& clipRect, byte* pAlphaMask, int xsub, int ysub, const DWORD* switchpts, bool fBody, bool fBorder);
#endif
- void FillSolidRect(SubPicDesc& spd, int x, int y, int nWidth, int nHeight, DWORD lColor);
+ void FillSolidRect(SubPicDesc& spd, int x, int y, int nWidth, int nHeight, DWORD lColor);
};