]> git.vomp.tv Git - vompclient.git/commitdiff
Formatting
authorChris Tallon <chris@vomp.tv>
Thu, 21 May 2020 17:12:14 +0000 (18:12 +0100)
committerChris Tallon <chris@vomp.tv>
Thu, 21 May 2020 17:12:14 +0000 (18:12 +0100)
surface.cc
surface.h

index 9c17aa848f15220a5bca08b7758d649be8dfe6da..94ece4071444feac12eb7cee765e8c6d1de3cce8 100644 (file)
@@ -32,7 +32,7 @@
 Surface* Surface::screen = NULL;
 
 #ifndef GRADIENT_DRAWING
-osd_font_t* Surface::font = &font_helvB18;
+  osd_font_t* Surface::font = &font_helvB18;
 #endif
 
 Surface::Surface(int id)
@@ -51,36 +51,44 @@ Surface* Surface::getScreen()
 
 void Surface::initpol_tables()
 {
-    int charsizex;
-    int charsizey;
-    charsizex=16;
-    if (Video::getInstance()->getFormat() == Video::PAL)
+  int charsizex;
+  int charsizey;
+  charsizex = 16;
+
+  if (Video::getInstance()->getFormat() == Video::PAL)
+  {
+    charsizey = 22;
+  }
+  else
+  {
+    charsizey = 18;
+  }
+
+  int ttcharsizex = 12;
+  int ttcharsizey = 10;
+
+  for (int py = 0; py < charsizey; py++)
+  {
+    float fposy = ((float)(ttcharsizey)) / ((float)(charsizey)) * ((float)py);
+    float yweight = fposy - floor(fposy);
+    float yinvweight = 1. - yweight;
+    interpol_upline[py] = std::min((int)(ceil(fposy)), 9);
+    interpol_lowline[py] = std::max((int)(floor(fposy)), 0);
+
+    for (int px = 0; px < charsizex; px++)
     {
-        charsizey=22;
-    } else {
-        charsizey=18;
-    }
-    int ttcharsizex=12;
-    int ttcharsizey=10;
-    for (int py=0;py<charsizey;py++) {
-        float fposy=((float)(ttcharsizey))/((float)(charsizey))*((float)py);
-        float yweight=fposy-floor(fposy);
-        float yinvweight=1.-yweight;
-        interpol_upline[py]=std::min((int)(ceil(fposy)),9);
-        interpol_lowline[py]=std::max((int)(floor(fposy)),0);
-        for (int px=0;px<charsizex;px++) {
-            float fposx=((float)(ttcharsizex))/((float)(charsizex))*((float)px);
-            float xweight=fposx-floor(fposx);
-            float xinvweight=1.-xweight;
-            interpol_upbit[px]= (std::min((int)ceil(fposx),11));
-            interpol_lowbit[px]= (std::max((int)floor(fposx),0));
-
-            interpol_table_fac1[px][py]=(unsigned int)(xweight*yweight*256.);
-            interpol_table_fac2[px][py]=(unsigned int)(xinvweight*yweight*256.);
-            interpol_table_fac3[px][py]=(unsigned int)(xweight*yinvweight*256.);
-            interpol_table_fac4[px][py]=(unsigned int)(xinvweight*yinvweight*256.);
-        }
+      float fposx = ((float)(ttcharsizex)) / ((float)(charsizex)) * ((float)px);
+      float xweight = fposx - floor(fposx);
+      float xinvweight = 1. - xweight;
+      interpol_upbit[px] = (std::min((int)ceil(fposx), 11));
+      interpol_lowbit[px] = (std::max((int)floor(fposx), 0));
+
+      interpol_table_fac1[px][py] = (unsigned int)(xweight * yweight * 256.);
+      interpol_table_fac2[px][py] = (unsigned int)(xinvweight * yweight * 256.);
+      interpol_table_fac3[px][py] = (unsigned int)(xweight * yinvweight * 256.);
+      interpol_table_fac4[px][py] = (unsigned int)(xinvweight * yinvweight * 256.);
     }
+  }
 }
 
 int Surface::drawText(const char* text, int x, int y, const DrawStyle& c)
@@ -98,28 +106,31 @@ int Surface::drawText(const char* text, int x, int y, int width, const DrawStyle
 
   X = 0;
   cx = 0;
-  ULONG rgba=c.rgba();
+  ULONG rgba = c.rgba();
   startFastDraw();
-  for (i=0; i<n; i++)
+
+  for (i = 0; i < n; i++)
   {
     unsigned char ch = text[i];
-    unsigned long *character = &font->content[font->offset[ch]];
+    unsigned longcharacter = &font->content[font->offset[ch]];
     int w = font->width[ch];
     int pixels = 0;
 
-    for (X=0; (X<w) && (X + cx < width); X++)
+    for (X = 0; (X < w) && (X + cx < width); X++)
     {
-      for (Y=0; Y<h; Y++)
+      for (Y = 0; Y < h; Y++)
       {
         if ((character[Y] >> (32 - X)) & 0x1)
         {
-          drawPixel(x+X+cx, y+Y, rgba,true);
+          drawPixel(x + X + cx, y + Y, rgba, true);
           pixels++;
         }
       }
     }
+
     cx += w;
   }
+
   endFastDraw();
   return 1;
 }
@@ -175,42 +186,59 @@ int Surface::getFontHeight()
 
 Colour Surface::enumTeletextColorToCoulour(enumTeletextColor ttcol)
 {
-    switch (ttcol) {
-        case ttcBlack:
-            return Colour(0,0,0);
-        case ttcRed:
-            return Colour(255,0,0);
-        case ttcGreen:
-            return Colour(0,255,0);
-        case ttcYellow:
-            return Colour(255,255,0);
-        case ttcBlue:
-            return Colour(0,0,255);
-        case ttcMagenta:
-            return Colour(255,0,255);
-        case ttcCyan:
-            return Colour(0,255,255);
-        case ttcWhite:
-            return Colour(255,255,255);
-        case ttcTransparent:
-            return Colour(0,0,0,0);
-        case ttcHalfRed:
-            return Colour(127,0,0);
-        case ttcHalfGreen:
-            return Colour(0,127,0);
-        case ttcHalfYellow:
-            return Colour(127,127,0);
-        case ttcHalfBlue:
-            return Colour(0,0,127);
-        case ttcHalfMagenta:
-            return Colour(127,0,127);
-        case ttcHalfCyan:
-            return Colour(0,127,127);
-        case ttcGrey:
-            return Colour(127,127,127);
-        default:
-            return Colour(0,0,0);
-    };
+  switch (ttcol)
+  {
+    case ttcBlack:
+      return Colour(0, 0, 0);
+
+    case ttcRed:
+      return Colour(255, 0, 0);
+
+    case ttcGreen:
+      return Colour(0, 255, 0);
+
+    case ttcYellow:
+      return Colour(255, 255, 0);
+
+    case ttcBlue:
+      return Colour(0, 0, 255);
+
+    case ttcMagenta:
+      return Colour(255, 0, 255);
+
+    case ttcCyan:
+      return Colour(0, 255, 255);
+
+    case ttcWhite:
+      return Colour(255, 255, 255);
+
+    case ttcTransparent:
+      return Colour(0, 0, 0, 0);
+
+    case ttcHalfRed:
+      return Colour(127, 0, 0);
+
+    case ttcHalfGreen:
+      return Colour(0, 127, 0);
+
+    case ttcHalfYellow:
+      return Colour(127, 127, 0);
+
+    case ttcHalfBlue:
+      return Colour(0, 0, 127);
+
+    case ttcHalfMagenta:
+      return Colour(127, 0, 127);
+
+    case ttcHalfCyan:
+      return Colour(0, 127, 127);
+
+    case ttcGrey:
+      return Colour(127, 127, 127);
+
+    default:
+      return Colour(0, 0, 0);
+  };
 }
 
 
@@ -218,97 +246,118 @@ Colour Surface::enumTeletextColorToCoulour(enumTeletextColor ttcol)
 //Next function inspired by osdteletext plugin
 void Surface::drawTTChar(int ox, int oy, int x, int y, cTeletextChar c)
 {
-       if (!pol_table_inited){
-               initpol_tables();
-               pol_table_inited=true;
-       }
-    unsigned int buffer [10];
-    unsigned int * charmap=GetFontChar(c,buffer);
-    if (!charmap) { //invalid char
-        memset(&buffer,0,10);
-        charmap=buffer;
-    }
-    enumTeletextColor ttforegcolour=c.GetFGColor();
-    enumTeletextColor ttbackgcolour=c.GetBGColor();
-    if (c.GetBoxedOut()) {
-        ttforegcolour=ttcTransparent;
-        ttbackgcolour=ttcTransparent;
-    }
-    int charsizex;
-    int charsizey;
-    charsizex=16;
+  if (!pol_table_inited)
+  {
+    initpol_tables();
+    pol_table_inited = true;
+  }
 
-    if (Video::getInstance()->getFormat() == Video::PAL)
+  unsigned int buffer [10];
+  unsigned int* charmap = GetFontChar(c, buffer);
+
+  if (!charmap)   //invalid char
+  {
+    memset(&buffer, 0, 10);
+    charmap = buffer;
+  }
+
+  enumTeletextColor ttforegcolour = c.GetFGColor();
+  enumTeletextColor ttbackgcolour = c.GetBGColor();
+
+  if (c.GetBoxedOut())
+  {
+    ttforegcolour = ttcTransparent;
+    ttbackgcolour = ttcTransparent;
+  }
+
+  int charsizex;
+  int charsizey;
+  charsizex = 16;
+
+  if (Video::getInstance()->getFormat() == Video::PAL)
+  {
+    charsizey = 22;
+  }
+  else
+  {
+    charsizey = 18;
+  }
+
+  //int ttcharsizex=12;
+  //int ttcharsizey=10;
+  int screenposx = charsizex * x + ox; //12*40= 480 250
+  int screenposy = y * charsizey + oy;
+
+
+  // Log::getInstance()->log("Surface", Log::ERR, "TTpos %d %d %d %d %d %d",x,y,ox,oy,screenposx,screenposy);
+  Colour fgcharcl = enumTeletextColorToCoulour(ttforegcolour);
+  Colour bgcharcl = enumTeletextColorToCoulour(ttbackgcolour);
+
+  startFastDraw();
+
+  for (int py = 0; py < charsizey; py++)
+  {
+    int upperbitline = charmap[interpol_upline[py]];
+    int lowerbitline = charmap[interpol_lowline[py]];
+
+    for (int px = 0; px < charsizex; px++)
     {
-        charsizey=22;
-    } else {
-        charsizey=18;
-    }
-    //int ttcharsizex=12;
-    //int ttcharsizey=10;
-    int screenposx=charsizex*x+ox; //12*40= 480 250
-    int screenposy=y*charsizey+oy;
-
-
-   // Log::getInstance()->log("Surface", Log::ERR, "TTpos %d %d %d %d %d %d",x,y,ox,oy,screenposx,screenposy);
-    Colour fgcharcl=enumTeletextColorToCoulour(ttforegcolour);
-    Colour bgcharcl=enumTeletextColorToCoulour(ttbackgcolour);
-
-    startFastDraw();
-    for (int py=0;py<charsizey;py++) {
-        int upperbitline=charmap[interpol_upline[py]];
-        int lowerbitline=charmap[interpol_lowline[py]];
-        for (int px=0;px<charsizex;px++) {
-            int upperbit= interpol_upbit[px];
-            int lowerbit= interpol_lowbit[px];
-            Colour uuc=( upperbitline &(0x8000>>upperbit)) ? fgcharcl: bgcharcl;
-            Colour ulc=( upperbitline &(0x8000>>lowerbit)) ? fgcharcl: bgcharcl;
-            Colour luc=( lowerbitline &(0x8000>>upperbit)) ? fgcharcl: bgcharcl;
-            Colour llc=( lowerbitline &(0x8000>>lowerbit)) ? fgcharcl: bgcharcl;
-            unsigned int fac1,fac2,fac3,fac4;
-            fac1=interpol_table_fac1[px][py];
-            fac2=interpol_table_fac2[px][py];
-            fac3=interpol_table_fac3[px][py];
-            fac4=interpol_table_fac4[px][py];
-
-            Colour res((uuc.red*fac1+ulc.red*fac2+luc.red*fac3+llc.red*fac4)/256,
-                (uuc.green*fac1+ulc.green*fac2+luc.green*fac3+llc.green*fac4)/256,
-                (uuc.blue*fac1+ulc.blue*fac2+luc.blue*fac3+llc.blue*fac4)/256,
-                (uuc.alpha*fac1+ulc.alpha*fac2+luc.alpha*fac3+llc.alpha*fac4)/256); //if this is too slow make a table
-            int newcolour = (  (res.alpha  << 24)
-                             | (res.red    << 16)
-                             | (res.green  <<  8)
-                             | (res.blue        ) );
-            drawPixel(screenposx+px, screenposy+py, newcolour, true);
-        }
+      int upperbit = interpol_upbit[px];
+      int lowerbit = interpol_lowbit[px];
+      Colour uuc = ( upperbitline & (0x8000 >> upperbit)) ? fgcharcl : bgcharcl;
+      Colour ulc = ( upperbitline & (0x8000 >> lowerbit)) ? fgcharcl : bgcharcl;
+      Colour luc = ( lowerbitline & (0x8000 >> upperbit)) ? fgcharcl : bgcharcl;
+      Colour llc = ( lowerbitline & (0x8000 >> lowerbit)) ? fgcharcl : bgcharcl;
+      unsigned int fac1, fac2, fac3, fac4;
+      fac1 = interpol_table_fac1[px][py];
+      fac2 = interpol_table_fac2[px][py];
+      fac3 = interpol_table_fac3[px][py];
+      fac4 = interpol_table_fac4[px][py];
+
+      Colour res((uuc.red * fac1 + ulc.red * fac2 + luc.red * fac3 + llc.red * fac4) / 256,
+                 (uuc.green * fac1 + ulc.green * fac2 + luc.green * fac3 + llc.green * fac4) / 256,
+                 (uuc.blue * fac1 + ulc.blue * fac2 + luc.blue * fac3 + llc.blue * fac4) / 256,
+                 (uuc.alpha * fac1 + ulc.alpha * fac2 + luc.alpha * fac3 + llc.alpha * fac4) / 256); //if this is too slow make a table
+      int newcolour = (  (res.alpha  << 24)
+                         | (res.red    << 16)
+                         | (res.green  <<  8)
+                         | (res.blue        ) );
+      drawPixel(screenposx + px, screenposy + py, newcolour, true);
     }
+  }
 
 
-    endFastDraw();
+  endFastDraw();
 
 
 }
 
 void Surface::drawMonoBitmap(UCHAR* base, int dx, int dy, unsigned int height,
-               unsigned int width, DrawStyle& nextColour) {
-       startFastDraw();
-       unsigned int x, y;
-       unsigned int bytesIn, bitsIn;
-       int widthBytes=width/8;
-       for (y = 0; y < height; y++) {
-               for (x = 0; x < width; x++) {
-                       bytesIn = (y * widthBytes) + (int) (x / 8);
-                       bitsIn = x % 8;
-
-                       if ((base[bytesIn] >> (7 - bitsIn)) & 0x01) {
-                               drawPixel(dx+x, dy+y, nextColour, true);
-                       }
-               }
-       }
-       endFastDraw();
+                             unsigned int width, DrawStyle& nextColour)
+{
+  startFastDraw();
+  unsigned int x, y;
+  unsigned int bytesIn, bitsIn;
+  int widthBytes = width / 8;
+
+  for (y = 0; y < height; y++)
+  {
+    for (x = 0; x < width; x++)
+    {
+      bytesIn = (y * widthBytes) + (int) (x / 8);
+      bitsIn = x % 8;
+
+      if ((base[bytesIn] >> (7 - bitsIn)) & 0x01)
+      {
+        drawPixel(dx + x, dy + y, nextColour, true);
+      }
+    }
+  }
+
+  endFastDraw();
 }
 
 void Surface::drawPoint(int x, int y, DrawStyle& c, bool fastdraw)
 {
-       drawPixel(x,y,c,fastdraw);
+  drawPixel(x, y, c, fastdraw);
 }
index b0effd36a60c20c2528944362b99b25c69b86f06..bf720f8e5b5e4259af5848dc9035fc67aaaa9df5 100644 (file)
--- a/surface.h
+++ b/surface.h
 // Font stuff
 
 // FIXME does anything use this anymore?
-typedef struct bogl_font {
-  char *name;     /* Font name. */
+typedef struct bogl_font
+{
+  char* name;     /* Font name. */
   int height;     /* Height in pixels. */
   int spacing;     /* Vertical spacing in pixels. */
-  unsigned long *content;   /* 32-bit right-padded bitmap array. */
-  short *offset;      /* 256 offsets into content. */
-  unsigned char *width;   /* 256 character widths. */
+  unsigned longcontent;   /* 32-bit right-padded bitmap array. */
+  shortoffset;      /* 256 offsets into content. */
+  unsigned charwidth;   /* 256 character widths. */
 } osd_font_t;
 
 //extern osd_font_t font_CaslonRoman_1_25;
@@ -47,27 +48,25 @@ extern osd_font_t font_helvB18;
 class Bitmap;
 class DisplayRegion;
 
-
-
 class Surface
 {
-  // classes that need surface access, their usage is forbidden for vector based
-  friend class WJpegComplex;// implementations of osd
-  friend class VColourTuner;
+    // classes that need surface access, their usage is forbidden for vector based
+    friend class WJpegComplex;// implementations of osd
+    friend class VColourTuner;
 
-public:
+  public:
     Surface(int id = 0);
     virtual ~Surface();
 
     static Surface* getScreen();
 
 #ifdef GRADIENT_DRAWING
-    virtual int getFontHeight()=0;
-    virtual float getCharWidth(wchar_t c)=0;
-    virtual int drawText(const char* text, int x, int y, const DrawStyle& c)=0;
-    virtual int drawText(const char* text, int x, int y, int width, const DrawStyle& c)=0;
-    virtual int drawTextRJ(const char* text, int x, int y, const DrawStyle& c)=0;
-    virtual int drawTextCentre(const char* text, int x, int y, const DrawStyle& c)=0;
+    virtual int getFontHeight() = 0;
+    virtual float getCharWidth(wchar_t c) = 0;
+    virtual int drawText(const char* text, int x, int y, const DrawStyle& c) = 0;
+    virtual int drawText(const char* text, int x, int y, int width, const DrawStyle& c) = 0;
+    virtual int drawTextRJ(const char* text, int x, int y, const DrawStyle& c) = 0;
+    virtual int drawTextCentre(const char* text, int x, int y, const DrawStyle& c) = 0;
 #else
     //May be move this stuff to a new Basis class surface pixel
     virtual int getFontHeight();
@@ -80,28 +79,27 @@ public:
 
     virtual void drawJpeg(const char* /* fileName */, int /* x */, int /* y */, int* /* width */, int* /* height */) {}
 
-    virtual int create(UINT width, UINT height)=0;
-    virtual void display()=0;
+    virtual int create(UINT width, UINT height) = 0;
+    virtual void display() = 0;
 
-    virtual int fillblt(int x, int y, int width, int height, const DrawStyle& c)=0;
-    virtual void drawHorzLine(int x1, int x2, int y, const DrawStyle& c)=0;
-    virtual void drawVertLine(int x, int y1, int y2, const DrawStyle& c)=0;
-    virtual void drawBitmap(int x, int y, const Bitmap& bm,const DisplayRegion & region)=0;
-    virtual void drawPoint(int x, int y, DrawStyle& c, bool fastdraw=false); // This draws a point, must not be a pixel
-    virtual void drawMonoBitmap(UCHAR* base, int dx, int dy, unsigned int height,unsigned int width, DrawStyle& nextColour);
-    virtual int updateToScreen(int sx, int sy, int w, int h, int dx, int dy)=0;
-    virtual void readPixel(int x, int y, unsigned char* r, unsigned char* g, unsigned char* b)=0;
-    virtual bool screenShot(const char* fileName)=0;
+    virtual int fillblt(int x, int y, int width, int height, const DrawStyle& c) = 0;
+    virtual void drawHorzLine(int x1, int x2, int y, const DrawStyle& c) = 0;
+    virtual void drawVertLine(int x, int y1, int y2, const DrawStyle& c) = 0;
+    virtual void drawBitmap(int x, int y, const Bitmap& bm, const DisplayRegion& region) = 0;
+    virtual void drawPoint(int x, int y, DrawStyle& c, bool fastdraw = false); // This draws a point, must not be a pixel
+    virtual void drawMonoBitmap(UCHAR* base, int dx, int dy, unsigned int height, unsigned int width, DrawStyle& nextColour);
+    virtual int updateToScreen(int sx, int sy, int w, int h, int dx, int dy) = 0;
+    virtual void readPixel(int x, int y, unsigned char* r, unsigned char* g, unsigned char* b) = 0;
+    virtual bool screenShot(const char* fileName) = 0;
 
     /* This is for system which need a locking of the drawing surface to speed up drawing */
     virtual void startFastDraw() {};
     virtual void endFastDraw() {};
 
-    virtual void drawTTChar(int ox, int oy,int x, int y, cTeletextChar c);
+    virtual void drawTTChar(int ox, int oy, int x, int y, cTeletextChar c);
     static Colour enumTeletextColorToCoulour(enumTeletextColor ttcol);
-  
 
-   // virtual int blt(int fd, unsigned long shandle, int sx, int sy, int width, int height, unsigned long dhandle, int dx, int dy)=0;
+    // virtual int blt(int fd, unsigned long shandle, int sx, int sy, int width, int height, unsigned long dhandle, int dx, int dy)=0;
 
     const static int SCREEN = 1;
     const static int BUFFER = 2;
@@ -112,8 +110,8 @@ public:
     static osd_font_t* font;
 #endif
 
-    virtual void drawPixel(int x, int y, unsigned int c, bool fastdraw=false)=0; // deprecated preparation for vector based drawing, only allowed to be called inside implementation
-    virtual void drawPixel(int x, int y, Colour& c, bool fastdraw=false)=0; // deprecated preparation for vector based drawing, only allowed to be called inside implementation
+    virtual void drawPixel(int x, int y, unsigned int c, bool fastdraw = false) = 0; // deprecated preparation for vector based drawing, only allowed to be called inside implementation
+    virtual void drawPixel(int x, int y, Colour& c, bool fastdraw = false) = 0; // deprecated preparation for vector based drawing, only allowed to be called inside implementation
 
   private:
     void initpol_tables();
@@ -125,7 +123,7 @@ public:
     int interpol_upbit[16];
     int interpol_lowline[22];
     int interpol_upline[22];
-    bool pol_table_inited=false;
+    bool pol_table_inited = false;
 };
 
 #endif