refresh frame fix, dblclk proxy viewer fix, vicon refresh fix for awdw resize, fix...
[goodguy/history.git] / cinelerra-5.1 / guicast / bccmodels.C
index 88ed1acdb201402d7bd5477e0f868256aa69e455..5d3da1ec5e058aa8333fbce24581b55860b77fef 100644 (file)
@@ -3,15 +3,15 @@
  * under the terms of the GNU Lesser General Public License as published
  * by the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This library 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
  * Lesser General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
  * USA
  */
 
@@ -26,12 +26,15 @@ int BC_CModels::is_planar(int colormodel)
 {
        switch(colormodel) {
        case BC_YUV420P:
+       case BC_YUV420PI:
        case BC_YUV422P:
        case BC_YUV444P:
+       case BC_GBRP:
        case BC_YUV411P:
        case BC_YUV410P:
        case BC_RGB_FLOATP:
-       case BC_RGBA_FLOATP:  return 1;
+       case BC_RGBA_FLOATP:
+               return 1;
        }
        return 0;
 }
@@ -39,23 +42,39 @@ int BC_CModels::is_planar(int colormodel)
 int BC_CModels::components(int colormodel)
 {
        switch(colormodel) {
-       case BC_A8:           return 1;
-       case BC_A16:          return 1;
-       case BC_A_FLOAT:      return 1;
-       case BC_RGB888:       return 3;
-       case BC_RGBA8888:     return 4;
-       case BC_RGB161616:    return 3;
-       case BC_RGBA16161616: return 4;
-       case BC_YUV888:       return 3;
-       case BC_YUVA8888:     return 4;
-       case BC_YUV161616:    return 3;
-       case BC_YUVA16161616: return 4;
-       case BC_YUV101010:    return 3;
-       case BC_RGB_FLOAT:    return 3;
-       case BC_RGBA_FLOAT:   return 4;
-       case BC_RGB_FLOATP:   return 3;
-       case BC_RGBA_FLOATP:  return 4;
+       case BC_RGB8:
+       case BC_RGB565:
+       case BC_BGR565:
+       case BC_BGR888:
+       case BC_RGB888:
+       case BC_RGB161616:
+       case BC_RGB_FLOAT:
+       case BC_BGR8888:
+       case BC_YUV888:
+       case BC_YUV161616:
+       case BC_UVY422:
+       case BC_YUV422:
+       case BC_YUV101010:
+       case BC_VYU888:
+               return 3;
+       case BC_RGBA8888:
+       case BC_ARGB8888:
+       case BC_ABGR8888:
+       case BC_RGBA16161616:
+       case BC_RGBA_FLOAT:
+       case BC_YUVA8888:
+       case BC_YUVA16161616:
+       case BC_UYVA8888:
+       case BC_AYUV16161616:
+               return 4;
+       case BC_A8:
+       case BC_A16:
+       case BC_A_FLOAT:
+       case BC_GREY8:
+       case BC_GREY16:
+               return 1;
        }
+// planar, compressed, transparent
        return 0;
 }
 
@@ -83,15 +102,20 @@ int BC_CModels::calculate_pixelsize(int colormodel)
        case BC_YUVA8888:     return 4;
        case BC_YUV161616:    return 6;
        case BC_YUVA16161616: return 8;
+       case BC_AYUV16161616: return 8;
        case BC_YUV101010:    return 4;
        case BC_VYU888:       return 3;
        case BC_UYVA8888:     return 4;
        case BC_RGB_FLOAT:    return 12;
        case BC_RGBA_FLOAT:   return 16;
+       case BC_GREY8:        return 1;
+       case BC_GREY16:       return 2;
 // Planar
        case BC_YUV420P:      return 1;
+       case BC_YUV420PI:     return 1;
        case BC_YUV422P:      return 1;
        case BC_YUV444P:      return 1;
+       case BC_GBRP:         return 1;
        case BC_YUV422:       return 2;
        case BC_UVY422:       return 2;
        case BC_YUV411P:      return 1;
@@ -117,10 +141,14 @@ int BC_CModels::calculate_max(int colormodel)
        case BC_YUVA8888:     return 0xff;
        case BC_YUV161616:    return 0xffff;
        case BC_YUVA16161616: return 0xffff;
+       case BC_AYUV16161616: return 0xffff;
        case BC_RGB_FLOAT:    return 1;
        case BC_RGBA_FLOAT:   return 1;
        case BC_RGB_FLOATP:   return 1;
        case BC_RGBA_FLOATP:  return 1;
+       case BC_GREY8:        return 0xff;
+       case BC_GREY16:       return 0xffff;
+       case BC_GBRP:         return 0xff;
        }
        return 0;
 }
@@ -130,9 +158,11 @@ int BC_CModels::calculate_datasize(int w, int h, int bytes_per_line, int color_m
        switch(color_model) {
        case BC_YUV410P: return w * h + w * h / 8 + 4;
        case BC_YUV420P:
+       case BC_YUV420PI:
        case BC_YUV411P: return w * h + w * h / 2 + 4;
        case BC_YUV422P: return w * h * 2 + 4;
        case BC_YUV444P: return w * h * 3 + 4;
+       case BC_GBRP:    return w * h * 3 + 4;
        case BC_RGB_FLOATP: return w * h * 3 * sizeof(float) + 4;
        case BC_RGBA_FLOATP: return w * h * 4 * sizeof(float) + 4;
        }
@@ -162,6 +192,7 @@ void BC_CModels::to_text(char *string, int cmodel)
        case BC_YUVA8888:     strcpy(string, "YUVA-8 Bit");  break;
        case BC_YUV161616:    strcpy(string, "YUV-16 Bit");  break;
        case BC_YUVA16161616: strcpy(string, "YUVA-16 Bit"); break;
+       case BC_AYUV16161616: strcpy(string, "AYUV-16 Bit"); break;
        case BC_RGB_FLOAT:    strcpy(string, "RGB-FLOAT");   break;
        case BC_RGBA_FLOAT:   strcpy(string, "RGBA-FLOAT");  break;
        case BC_RGB_FLOATP:   strcpy(string, "RGB-FLOATP");  break;
@@ -184,6 +215,7 @@ int BC_CModels::from_text(const char *text)
        if(!strcasecmp(text, "YUVA-8 Bit"))  return BC_YUVA8888;
        if(!strcasecmp(text, "YUV-16 Bit"))  return BC_YUV161616;
        if(!strcasecmp(text, "YUVA-16 Bit")) return BC_YUVA16161616;
+       if(!strcasecmp(text, "AYUV-16 Bit")) return BC_AYUV16161616;
        return BC_RGB888;
 }
 
@@ -225,16 +257,20 @@ int BC_CModels::is_yuv(int colormodel)
        case BC_YUVA8888:
        case BC_YUV161616:
        case BC_YUVA16161616:
+       case BC_AYUV16161616:
        case BC_YUV422:
        case BC_UVY422:
        case BC_YUV101010:
        case BC_VYU888:
        case BC_UYVA8888:
        case BC_YUV420P:
+       case BC_YUV420PI:
        case BC_YUV422P:
        case BC_YUV444P:
        case BC_YUV411P:
        case BC_YUV410P:
+       case BC_GREY8:
+       case BC_GREY16:
                return 1;
        }
        return 0;