}
-
-
-
-
-
//static BCCounter counter;
VFramePng::VFramePng(unsigned char *png_data, double s)
pixel_rgb = 0x000000; // BLACK
pixel_yuv = 0x008080;
stipple = 0;
+ clear_color = 0x000000;
+ clear_alpha = 0x00;
if(do_opengl)
{
void VFrame::get_temp(VFrame *&vfrm, int w, int h, int color_model)
{
- if( vfrm && ( vfrm->get_w() != w || vfrm->get_h() != h ) ) {
+ if( vfrm && ( vfrm->color_model != color_model ||
+ vfrm->get_w() != w || vfrm->get_h() != h ) ) {
delete vfrm; vfrm = 0;
}
if( !vfrm ) vfrm = new VFrame(w, h, color_model, 0);
return 1;
}
int ww = w * xscale, hh = h * yscale;
+ if( ww < 1 ) ww = 1;
+ if( hh < 1 ) hh = 1;
if( ww != w || hh != h ) {
VFrame vframe(*this);
reallocate(NULL, -1, 0, 0, 0, ww, hh, color_model, -1);
} \
}
-int VFrame::clear_frame()
+void VFrame::black_frame()
{
int sz = w * h;
-//printf("VFrame::clear_frame %d\n", __LINE__);
+//printf("VFrame::black_frame %d\n", __LINE__);
switch(color_model) {
case BC_COMPRESSED:
break;
bzero(data, calculate_data_size(w, h, bytes_per_line, color_model));
break;
}
- return 0;
+}
+
+void VFrame::set_clear_color(int color, int alpha)
+{
+ clear_color = color;
+ clear_alpha = alpha;
+}
+int VFrame::get_clear_color() { return clear_color; }
+int VFrame::get_clear_alpha() { return clear_alpha; }
+
+void VFrame::clear_frame()
+{
+ if( clear_color >= 0 &&
+ !BC_CModels::init_color(clear_color, clear_alpha,
+ get_rows(), get_color_model(), get_y(), get_u(), get_v(),
+ 0,0, get_w(),get_h(), get_bytes_per_line()) )
+ return;
+ black_frame();
}
void VFrame::rotate90()
timestamp = that->timestamp;
copy_params(that);
- if( this->get_color_model() == that->get_color_model() &&
+ if( in_x == 0 && in_y == 0 && in_w == that->get_w() && in_h == that->get_h() &&
+ bg_color == 0 && this->get_color_model() == that->get_color_model() &&
this->get_w() == that->get_w() && this->get_h() == that->get_h() &&
this->get_bytes_per_line() == that->get_bytes_per_line() )
return this->copy_from(that);