+
+
+AssetVIcon::AssetVIcon(AssetPicon *picon, int w, int h, double framerate, int64_t length)
+ : VIcon(w, h, framerate)
+{
+ this->picon = picon;
+ this->length = length;
+ temp = 0;
+}
+
+AssetVIcon::~AssetVIcon()
+{
+ delete temp;
+}
+
+VFrame *AssetVIcon::frame()
+{
+ if( seq_no >= images.size() ) {
+ MWindow *mwindow = picon->mwindow;
+ Asset *asset = (Asset *)picon->indexable;
+ File *file = mwindow->video_cache->check_out(asset, mwindow->edl, 1);
+ if( !file ) return 0;
+ if( temp && (temp->get_w() != asset->width || temp->get_h() != asset->height) ) {
+ delete temp; temp = 0;
+ }
+ if( !temp )
+ temp = new VFrame(asset->width, asset->height, BC_RGB888);
+ int ww = picon->gui->vicon_thread->view_w;
+ int hh = picon->gui->vicon_thread->view_h;
+ while( seq_no >= images.size() ) {
+ file->set_layer(0);
+ int64_t pos = images.size() / picon->gui->vicon_thread->refresh_rate * frame_rate;
+ file->set_video_position(pos,0);
+ file->read_frame(temp);
+ add_image(temp, ww, hh, BC_RGB8);
+ }
+ mwindow->video_cache->check_in(asset);
+ }
+ return *images[seq_no];
+}
+
+int64_t AssetVIcon::set_seq_no(int64_t no)
+{
+ if( no >= length ) no = 0;
+ return seq_no = no;
+}
+
+int AssetVIcon::get_vx()
+{
+ BC_ListBox *lbox = picon->gui->asset_list;
+ return lbox->get_item_x(picon);
+}
+int AssetVIcon::get_vy()
+{
+ BC_ListBox *lbox = picon->gui->asset_list;
+ return lbox->get_item_y(picon) + lbox->get_title_h();
+}
+