summaryrefslogtreecommitdiff
path: root/dxr3osd_subpicture.c
diff options
context:
space:
mode:
authorscop <scop>2005-04-19 18:19:34 +0000
committerscop <scop>2005-04-19 18:19:34 +0000
commitf9c59e544ada17055c3ed15b3d80f0d285c3928d (patch)
treecd7b038c17b040beb435e0a16aab02346854c9ad /dxr3osd_subpicture.c
parentdea137eddfe1017e9ff85a8c221aee2bca4647ad (diff)
downloadvdr-plugin-dxr3-f9c59e544ada17055c3ed15b3d80f0d285c3928d.tar.gz
vdr-plugin-dxr3-f9c59e544ada17055c3ed15b3d80f0d285c3928d.tar.bz2
Mass indentation/whitespace cleanup.
Diffstat (limited to 'dxr3osd_subpicture.c')
-rw-r--r--dxr3osd_subpicture.c367
1 files changed, 196 insertions, 171 deletions
diff --git a/dxr3osd_subpicture.c b/dxr3osd_subpicture.c
index 47d4712..b96b0c2 100644
--- a/dxr3osd_subpicture.c
+++ b/dxr3osd_subpicture.c
@@ -3,27 +3,30 @@
// Enables some time measure debugging code
// (taken from the osdteletext plugin, thanks folks)
#ifdef timingdebug
- #include <sys/timeb.h>
-
- class cTime {
- // Debugging: Simple class to measure time
- timeb start;
- public:
- void Start() {
- ftime(&start);
- }
- void Stop(char *txt) {
- timeb t;
- ftime(&t);
- int s=t.time-start.time;
- int ms=t.millitm-start.millitm;
- if (ms<0) {
- s--;
- ms+=1000;
- }
- printf("%s: %i.%03i\n",txt,s,ms);
- }
- };
+#include <sys/timeb.h>
+class cTime
+{
+ // Debugging: Simple class to measure time
+ timeb start;
+public:
+ void Start()
+ {
+ ftime(&start);
+ }
+ void Stop(char *txt)
+ {
+ timeb t;
+ ftime(&t);
+ int s = t.time-start.time;
+ int ms = t.millitm - start.millitm;
+ if (ms<0)
+ {
+ s--;
+ ms += 1000;
+ }
+ printf("%s: %i.%03i\n", txt, s, ms);
+ }
+};
#endif
#if VDRVERSNUM >= 10307
@@ -34,28 +37,28 @@
//! constructor
cDxr3SubpictureOsd::cDxr3SubpictureOsd(int Left, int Top) : cOsd(Left, Top)
{
- shown = false;
- Palette = new cPalette(4);
+ shown = false;
+ Palette = new cPalette(4);
#if VDRVERSNUM >= 10318
- last = new cTimeMs();
- last->Set(-FLUSHRATE);
+ last = new cTimeMs();
+ last->Set(-FLUSHRATE);
#else
- last = time_ms() - FLUSHRATE;
+ last = time_ms() - FLUSHRATE;
#endif
- Spu = &cSPUEncoder::Instance();
-
- //Clears the OSD screen image
- Spu->Clear();
+ Spu = &cSPUEncoder::Instance();
+
+ //Clears the OSD screen image
+ Spu->Clear();
}
// ==================================
cDxr3SubpictureOsd::~cDxr3SubpictureOsd()
{
- //Remove the OSD from the screen
- Spu->StopSpu();
- delete Palette;
+ //Remove the OSD from the screen
+ Spu->StopSpu();
+ delete Palette;
#if VDRVERSNUM >= 10318
- delete last;
+ delete last;
#endif
}
@@ -63,176 +66,198 @@ cDxr3SubpictureOsd::~cDxr3SubpictureOsd()
eOsdError cDxr3SubpictureOsd::CanHandleAreas(const tArea *Areas, int NumAreas)
{
- eOsdError Result = cOsd::CanHandleAreas(Areas, NumAreas);
- if (Result == oeOk)
+ eOsdError Result = cOsd::CanHandleAreas(Areas, NumAreas);
+ if (Result == oeOk)
+ {
+ if (NumAreas > MAXNUMWINDOWS)
{
- if (NumAreas > MAXNUMWINDOWS)
- {
- return oeTooManyAreas;
- }
-
- for (int i = 0; i < NumAreas; i++)
- {
- if (Areas[i].bpp != 1 && Areas[i].bpp != 2 && Areas[i].bpp != 4 && Areas[i].bpp != 8)
- {
- return oeBppNotSupported;
- }
-
- if ((Areas[i].Width() & (8 / Areas[i].bpp - 1)) != 0)
- {
- return oeWrongAlignment;
- }
- }
+ return oeTooManyAreas;
+ }
+
+ for (int i = 0; i < NumAreas; i++)
+ {
+ if (Areas[i].bpp != 1 &&
+ Areas[i].bpp != 2 &&
+ Areas[i].bpp != 4 &&
+ Areas[i].bpp != 8)
+ {
+ return oeBppNotSupported;
+ }
+
+ if ((Areas[i].Width() & (8 / Areas[i].bpp - 1)) != 0)
+ {
+ return oeWrongAlignment;
+ }
}
- return Result;
+ }
+ return Result;
}
// ==================================
void cDxr3SubpictureOsd::SaveRegion(int x1, int y1, int x2, int y2)
{
- // ToDo?
+ // ToDo?
}
// ==================================
void cDxr3SubpictureOsd::RestoreRegion()
{
- // ToDo?
+ // ToDo?
}
// ==================================
void cDxr3SubpictureOsd::Flush()
{
#if VDRVERSNUM >= 10318
- if (last->Elapsed()<FLUSHRATE) return;
- last->Set();
+ if (last->Elapsed()<FLUSHRATE) return;
+ last->Set();
#else
- if (time_ms()-last<FLUSHRATE) return;
- last = time_ms();
+ if (time_ms()-last<FLUSHRATE) return;
+ last = time_ms();
+#endif
+
+#ifdef timingdebug
+ cTime t;
+ t.Start();
#endif
- #ifdef timingdebug
- cTime t;
- t.Start();
- #endif
-
- cBitmap *Bitmap;
- int oldi;
- int newi;
- int i;
- int indexfree[16];
- int firstfree=-1;
- int indexnoassigned[16];
- int firstnoassigned=-1;
- bool colfree[16];
- int NumNewColors;
- int NumOldColors;
-
- //determine the palette used by all bitmaps (without alpha channel)
-
- cPalette *newPalette=new cPalette(4);
- for (i=0; i<16; i++) colfree[i]=true;
- for (i=0; (Bitmap = GetBitmap(i)) != NULL; i++) {
- int nc;
- const tColor *col=Bitmap->Colors(nc);
- if (col) for (int kk=0; kk<nc; kk++) newPalette->Index(col[kk] & 0x00FFFFFF);
- }
- const tColor *newColors=newPalette->Colors(NumNewColors);
- const tColor *oldColors=Palette->Colors(NumOldColors);
- //colors already assigned
- for (newi=0;newi<NumNewColors;newi++) {
- for(oldi=0;oldi<NumOldColors;oldi++) {
- if (newColors[newi]==oldColors[oldi]) {
- colfree[oldi]=false;
- break;
+ cBitmap *Bitmap;
+ int oldi;
+ int newi;
+ int i;
+ int indexfree[16];
+ int firstfree = -1;
+ int indexnoassigned[16];
+ int firstnoassigned = -1;
+ bool colfree[16];
+ int NumNewColors;
+ int NumOldColors;
+
+ //determine the palette used by all bitmaps (without alpha channel)
+
+ cPalette *newPalette = new cPalette(4);
+ for (i = 0; i < 16; i++)
+ colfree[i]=true;
+ for (i = 0; (Bitmap = GetBitmap(i)) != NULL; i++)
+ {
+ int nc;
+ const tColor *col = Bitmap->Colors(nc);
+ if (col)
+ for (int kk = 0; kk < nc; kk++)
+ newPalette->Index(col[kk] & 0x00FFFFFF);
+ }
+ const tColor *newColors = newPalette->Colors(NumNewColors);
+ const tColor *oldColors = Palette->Colors(NumOldColors);
+ // colors already assigned
+ for (newi = 0; newi < NumNewColors; newi++)
+ {
+ for (oldi = 0; oldi < NumOldColors; oldi++)
+ {
+ if (newColors[newi] == oldColors[oldi])
+ {
+ colfree[oldi] = false;
+ break;
}
- }
- if (oldi>=NumOldColors) {
- firstnoassigned++;
- indexnoassigned[firstnoassigned]=newi;
- }
}
- //unused colors
- for (i=0; i<NumOldColors; i++) {
- if(colfree[i]) {
+ if (oldi >= NumOldColors)
+ {
+ firstnoassigned++;
+ indexnoassigned[firstnoassigned] = newi;
+ }
+ }
+ // unused colors
+ for (i = 0; i < NumOldColors; i++)
+ {
+ if (colfree[i]) {
firstfree++;
- indexfree[firstfree]=i;
- }
+ indexfree[firstfree] = i;
}
- //replace unused colors with unassigned ones
- for (i=0; i<=firstnoassigned; i++) {
- newi=indexnoassigned[i];
- if (firstfree>=0) {
+ }
+ // replace unused colors with unassigned ones
+ for (i = 0; i <= firstnoassigned; i++)
+ {
+ newi = indexnoassigned[i];
+ if (firstfree >= 0)
+ {
Palette->SetColor(indexfree[firstfree], newColors[newi]);
firstfree--;
- } else {
+ } else {
Palette->Index(newColors[newi]);
- }
}
- delete newPalette;
-
- //Shove the bitmaps to the OSD global bitmap
- for (int i = 0; (Bitmap = GetBitmap(i)) != NULL; i++)
+ }
+ delete newPalette;
+
+ // Shove the bitmaps to the OSD global bitmap
+ for (int i = 0; (Bitmap = GetBitmap(i)) != NULL; i++)
+ {
+ int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
+ if (Bitmap->Dirty(x1, y1, x2, y2))
{
- int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
- if (Bitmap->Dirty(x1, y1, x2, y2))
+ /* TODO workaround:
+ apparently the bitmap sent to the driver always has to be a
+ multiple of 8 bits wide, and (dx * dy) also has to be a
+ multiple of 8. Fix driver (should be able to handle any size
+ bitmaps!)
+ This isn't actually necessary with this plugin, but since other
+ plugins rely on this behaviour to work correctly, I left it
+ here. It doesn't hurt too much.
+ */
+
+ while ((x1 > 0 || x2 < Bitmap->Width() - 1) &&
+ ((x2 - x1) & 7) != 7)
+ {
+ if (x2 < Bitmap->Width() - 1)
+ {
+ x2++;
+ }
+ else if (x1 > 0)
+ {
+ x1--;
+ }
+ }
+
+ //TODO "... / 2" <==> Bpp???
+ while ((y1 > 0 || y2 < Bitmap->Height() - 1) &&
+ (((x2 - x1 + 1) * (y2 - y1 + 1) / 2) & 7) != 0)
+ {
+ if (y2 < Bitmap->Height() - 1)
+ {
+ y2++;
+ }
+ else if (y1 > 0)
{
- //TODO Workaround: apparently the bitmap sent to the driver always has to be a multiple
- //TODO of 8 bits wide, and (dx * dy) also has to be a multiple of 8.
- //TODO Fix driver (should be able to handle any size bitmaps!)
- //
- // This isn't actually necessary with this plugin, but since other plugins rely
- // on this behaviour to work correctly, I left it here. It doesn't hurt too much.
-
- while ((x1 > 0 || x2 < Bitmap->Width() - 1) && ((x2 - x1) & 7) != 7)
- {
- if (x2 < Bitmap->Width() - 1)
- {
- x2++;
- }
- else if (x1 > 0)
- {
- x1--;
- }
- }
-
- //TODO "... / 2" <==> Bpp???
- while ((y1 > 0 || y2 < Bitmap->Height() - 1) && (((x2 - x1 + 1) * (y2 - y1 + 1) / 2) & 7) != 0)
- {
- if (y2 < Bitmap->Height() - 1)
- {
- y2++;
- }
- else if (y1 > 0)
- {
- y1--;
- }
- }
-
- while ((x1 > 0 || x2 < Bitmap->Width() - 1) && (((x2 - x1 + 1) * (y2 - y1 + 1) / 2) & 7) != 0)
- {
- if (x2 < Bitmap->Width() - 1)
- {
- x2++;
- }
- else if (x1 > 0)
- {
- x1--;
- }
- }
-
- Spu->SetPalette(i+1,Palette,Bitmap);
- int origx=Left()+Bitmap->X0();
- int origy=Top()+Bitmap->Y0();
- Spu->CopyBlockIntoOSD(i+1, Bitmap->Width(), origx+x1, origy+y1, origx+x2, origy+y2, Bitmap->Data(x1, y1));
- Bitmap->Clean();
+ y1--;
}
+ }
+
+ while ((x1 > 0 || x2 < Bitmap->Width() - 1) &&
+ (((x2 - x1 + 1) * (y2 - y1 + 1) / 2) & 7) != 0)
+ {
+ if (x2 < Bitmap->Width() - 1)
+ {
+ x2++;
+ }
+ else if (x1 > 0)
+ {
+ x1--;
+ }
+ }
+
+ Spu->SetPalette(i + 1, Palette, Bitmap);
+ int origx = Left() + Bitmap->X0();
+ int origy = Top() + Bitmap->Y0();
+ Spu->CopyBlockIntoOSD(i + 1, Bitmap->Width(), origx + x1,
+ origy + y1, origx + x2, origy + y2,
+ Bitmap->Data(x1, y1));
+ Bitmap->Clean();
}
-
- Spu->Flush(Palette);
- shown = true;
- #ifdef timingdebug
- t.Stop("cDxr3SubpictureOsd::Flush");
- #endif
+ }
+
+ Spu->Flush(Palette);
+ shown = true;
+#ifdef timingdebug
+ t.Stop("cDxr3SubpictureOsd::Flush");
+#endif
}
#endif /*VDRVERSNUM*/