summaryrefslogtreecommitdiff
path: root/dxr3colormanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'dxr3colormanager.h')
-rw-r--r--dxr3colormanager.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/dxr3colormanager.h b/dxr3colormanager.h
new file mode 100644
index 0000000..063252d
--- /dev/null
+++ b/dxr3colormanager.h
@@ -0,0 +1,122 @@
+/***************************************************************************
+ dxr3colormanager.h - description
+ -------------------
+ begin : Tue Oct 22 2002
+ copyright : (C) 2002 by Stefan Schluenss
+ email : vdr@schluenss.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _DXR3COLORMANAGER_H_
+#define _DXR3COLORMANAGER_H_
+/*
+// ==================================
+struct rectangular_area
+{
+ rectangular_area() : m_startrow(0), m_endrow(0), m_startcol(0), m_endcol(0) {}
+
+private:
+ size_t m_startrow;
+ size_t m_endrow;
+ size_t m_startcol;
+ size_t m_endcol;
+
+ unsigned int Colors[4];
+ unsigned int Opac[4];
+}
+
+
+
+*/
+
+
+
+/**SPU-ColorManager
+ *@author Stefan Schluenss
+*/
+
+#include <stdio.h>
+
+#define OSD_SPU_CM_DUMP 0
+
+#define MAX_NO_OF_SECTIONS 15
+#define MAX_NO_OF_REGIONS 30
+
+
+// ==================================
+class xSection
+{
+public:
+ xSection(int x);
+ bool HasColor(unsigned int color, unsigned char &ColorIndex);
+ unsigned char AddColor(unsigned int color);
+ bool AllColorsUsed() {/*DIAG("AllColorsUsed: %d\n",NrOfColors)*/;if(NrOfColors >= 4) return(true); else return (false); };
+ int X1;
+ int X2;
+ int NrOfColors;
+ unsigned int Colors[4];
+ unsigned int Opac[4];
+};
+
+// ==================================
+class yRegion
+{
+public:
+ yRegion(): Y1(0), Y2(0), N(0) {}
+
+ /** No descriptions */
+ void AddSection(int first, int last, unsigned int color, unsigned int opac);
+ int Y1;
+ int Y2;
+ int N;
+
+ xSection* Section[MAX_NO_OF_SECTIONS];
+};
+
+// ==================================
+class cColorManager
+{
+public:
+ cColorManager();
+ ~cColorManager();
+
+ void EncodeColors(int width, int height, unsigned char* smap, unsigned char* dmap);
+
+ /** Sets a new color on the OSD */
+ unsigned char AddColor(int x, int y, unsigned char color, unsigned char &ColorIndex);
+
+ /** encodes the color information as highlight spu data*/
+ unsigned char* GetSpuData(int &len);
+
+ /** Adds a new highlight region beginning from FIRST to LAST column */
+// void AddRegion(int first, int last, unsigned int color, unsigned int opac=0xFFFF);
+
+ /** No descriptions */
+ void SetBgColor(unsigned int bgColor);
+
+private: // Private attributes
+ yRegion *hlr[MAX_NO_OF_REGIONS];
+ int NrOfRegions;
+ bool isopen;
+ unsigned char spudata[2*4096];
+ unsigned int BgCol;
+ int MaxY;
+
+ /** Opens a new highlight region */
+ void OpenRegion(int y, int NrOfSecToCopy = 0);
+ /** Closes the spu-highlight region */
+ void CloseRegion(int y);
+
+ xSection* NewSection(int x);
+ xSection *GetSection(int x, int &n);
+};
+
+#endif /*_DXR3COLORMANAGER_H_*/