delete zoom_panel;
delete active;
delete inactive;
+ delete focus_frame;
delete orig_mask_keyframe;
}
active = new BC_Pixmap(this, mwindow->theme->get_image("cwindow_active"));
inactive = new BC_Pixmap(this, mwindow->theme->get_image("cwindow_inactive"));
+ focus_frame = new VFramePng(mwindow->theme->get_image_data("cwindow_focus.png"));
mwindow->theme->get_cwindow_sizes(this, mwindow->session->cwindow_controls);
mwindow->theme->draw_cwindow_bg(this);
output_to_canvas(mwindow->edl, 0, fx, fy);
float r = bmax(cvs_win->get_w(), cvs_win->get_h());
float d = 0.005*r;
+#if 1
+ int fw = 2*d+3, fh = fw;
+ VFrame focus(fw,fh, BC_RGBA8888);
+ focus.transfer_from(gui->focus_frame);
+ fx -= fw/2.f; fy -= fh/2.f;
+ BC_Pixmap focus_pixmap(cvs_win, &focus, PIXMAP_ALPHA);
+ cvs_win->draw_pixmap(&focus_pixmap,fx,fy);
+#else
cvs_win->set_line_width((int)(0.0025*r) + 1);
cvs_win->set_color(BLUE);
cvs_win->draw_line(fx-d,fy-d, fx+d, fy+d);
cvs_win->draw_line(fx-d,fy+d, fx+d, fy-d);
cvs_win->set_line_width(0);
cvs_win->set_color(WHITE);
+#endif
+ }
+ if( draw && mask_gui && mask_gui->center_mark && points.size() ) {
+ float cx = 0, cy = 0;
+ int n = points.size();
+ for( int i=0; i<n; ++i ) {
+ MaskPoint *point = points.get(i);
+ cx += point->x; cy += point->y;
+ }
+ cx /= n; cy /= n;
+ output_to_canvas(mwindow->edl, 0, cx, cy);
+ float r = bmax(cvs_win->get_w(), cvs_win->get_h());
+ float d = 0.003*r;
+ cvs_win->set_line_width((int)(0.002*r) + 1);
+ cvs_win->set_color(ORANGE);
+ cvs_win->draw_line(cx-d,cy, cx+d, cy);
+ cvs_win->draw_line(cx,cy-d, cx, cy+d);
+ cvs_win->set_line_width(0);
+ cvs_win->set_color(WHITE);
}
//printf("CWindowCanvas::do_mask 1\n");
}
point->control_x2 = !rotate ? px*scale : px*ct + py*st;
point->control_y2 = !rotate ? py*scale : py*ct - px*st;
}
+ rerender = 1;
+ redraw = 1;
break; }
}
CTimeBar *timebar;
BC_Pixmap *active;
BC_Pixmap *inactive;
+ VFrame *focus_frame;
// MainClock *clock;
}
+CWindowMaskTrack::CWindowMaskTrack(MWindow *mwindow, CWindowMaskGUI *gui,
+ int x, int y, const char *text)
+ : BC_Title(x, y, text, MEDIUMFONT, get_resources()->button_highlighted)
+{
+ this->mwindow = mwindow;
+ this->gui = gui;
+}
+
+CWindowMaskTrack::~CWindowMaskTrack()
+{
+}
+
CWindowMaskName::CWindowMaskName(MWindow *mwindow, CWindowMaskGUI *gui,
int x, int y, const char *text)
: BC_PopupTextBox(gui, 0, text, x, y, 100, 160)
{
this->mwindow = mwindow;
this->gui = gui;
- set_tooltip("Center for rotate/scale");
+ set_tooltip(_("Center for rotate/scale"));
}
CWindowMaskFocus::~CWindowMaskFocus()
return 1;
}
+CWindowMaskDrawCenter::CWindowMaskDrawCenter(MWindow *mwindow, CWindowToolGUI *gui, int x, int y)
+ : BC_CheckBox(x, y, ((CWindowMaskGUI*)gui)->center_mark, _("Center Mark"))
+{
+ this->mwindow = mwindow;
+ this->gui = gui;
+ set_tooltip(_("show center of mask points"));
+}
+
+CWindowMaskDrawCenter::~CWindowMaskDrawCenter()
+{
+}
+
+int CWindowMaskDrawCenter::handle_event()
+{
+ ((CWindowMaskGUI*)gui)->center_mark = get_value();
+ gui->update();
+ gui->update_preview();
+ return 1;
+}
+
CWindowMaskDrawMarkers::CWindowMaskDrawMarkers(MWindow *mwindow, CWindowToolGUI *gui, int x, int y)
: BC_CheckBox(x, y, ((CWindowMaskGUI*)gui)->markers, _("Markers"))
{
CWindowMaskGUI::CWindowMaskGUI(MWindow *mwindow, CWindowTool *thread)
: CWindowToolGUI(mwindow, thread,
- _(PROGRAM_NAME ": Mask"), 360, 500)
+ _(PROGRAM_NAME ": Mask"), 360, 620)
{
this->mwindow = mwindow;
this->thread = thread;
fade = 0;
feather = 0;
focused = 0;
+ center_mark = 0;
markers = 1;
boundary = 1;
}
// keyframe = (MaskAuto*)mwindow->cwindow->calculate_affected_auto(track->automation->autos[AUTOMATION_MASK], 0);
lock_window("CWindowMaskGUI::create_objects");
+ BC_TitleBar *title_bar;
+ add_subwindow(title_bar = new BC_TitleBar(x, y, get_w()-2*x, 20, 10, _("Masks on Track")));
+ y += title_bar->get_h() + margin;
+ int x1 = x + 70;
+ add_subwindow(mask_track = new CWindowMaskTrack(mwindow, this, x1, y, ""));
+ y += mask_track->get_h() + margin;
+ add_subwindow(title_bar = new BC_TitleBar(x, y, get_w()-2*x, 20, 10, _("Masks")));
+ y += title_bar->get_h() + margin;
BC_Title *title;
add_subwindow(title = new BC_Title(x, y, _("Mask:")));
- int x1 = x + 70;
name = new CWindowMaskName(mwindow, this, x1, y, "");
name->create_objects();
add_subwindow(clr_mask = new CWindowMaskClrMask(mwindow, this, clr_x, y));
mask_blabels[i] = new BC_Title(x2+tx, y, text);
add_subwindow(mask_blabels[i]);
}
- y += bh + 2*margin;
+ y += mask_blabels[0]->get_h() + 2*margin;
+ add_subwindow(title_bar = new BC_TitleBar(x, y, get_w()-2*x, 20, 10, _("Fade & Feather")));
+ y += title_bar->get_h() + margin;
add_subwindow(title = new BC_Title(x, y, _("Fade:")));
fade = new CWindowMaskFade(mwindow, this, x1, y);
feather_slider = new CWindowMaskFeatherSlider(mwindow, this, x2, y, w2, 0);
add_subwindow(feather_slider);
add_subwindow(gang_feather = new CWindowMaskGangFeather(mwindow, this, clr_x, y));
- y += feather->get_h() + 3*margin;
+ y += feather->get_h() + 2*margin;
+ add_subwindow(title_bar = new BC_TitleBar(x, y, get_w()-2*x, 20, 10, _("Mask Points")));
+ y += title_bar->get_h() + margin;
add_subwindow(title = new BC_Title(x, y, _("Point:")));
active_point = new CWindowMaskAffectedPoint(mwindow, this, x1, y);
this->y = new CWindowCoord(this, x1, y, (float)0.0);
this->y->create_objects();
add_subwindow(draw_boundary = new CWindowMaskDrawBoundary(mwindow, this, del_x, y));
- y += this->y->get_h() + margin;
- BC_Bar *bar;
- add_subwindow(bar = new BC_Bar(x, y, get_w()-2*x));
- y += bar->get_h() + margin;
+ y += this->y->get_h() + 2*margin;
+ add_subwindow(title_bar = new BC_TitleBar(x, y, get_w()-2*x, 20, 10, _("Pivot Point")));
+ y += title_bar->get_h() + margin;
add_subwindow(title = new BC_Title(x, y, "X:"));
focus_x = new CWindowCoord(this, x1, y, (float)0.0);
add_subwindow(title = new BC_Title(x, y, "Y:"));
focus_y = new CWindowCoord(this, x1, y, (float)0.0);
focus_y->create_objects();
- y += focus_x->get_h() + margin;
+ add_subwindow(draw_center = new CWindowMaskDrawCenter(mwindow, this, del_x, y));
+ y += focus_x->get_h() + 2*margin;
+ BC_Bar *bar;
+ add_subwindow(bar = new BC_Bar(x, y, get_w()-2*x));
+ y += bar->get_h() + margin;
add_subwindow(this->apply_before_plugins = new CWindowMaskBeforePlugins(this, 10, y));
y += this->apply_before_plugins->get_h();
add_subwindow(this->disable_opengl_masking = new CWindowDisableOpenGLMasking(this, 10, y));
//printf("CWindowMaskGUI::update 1\n");
get_keyframe(track, autos, keyframe, mask, point, 0);
+ mask_track->update(!track ? "" : track->title);
name->update_items(keyframe);
const char *text = "";
int sz = !keyframe ? 0 : keyframe->masks.size();
CWindowCoord *x1, *y1, *width, *height;
};
+class CWindowMaskTrack : public BC_Title
+{
+public:
+ CWindowMaskTrack(MWindow *mwindow, CWindowMaskGUI *gui,
+ int x, int y, const char *text);
+ ~CWindowMaskTrack();
+ MWindow *mwindow;
+ CWindowMaskGUI *gui;
+};
+
class CWindowMaskItems : public ArrayList<BC_ListBoxItem*>
{
public:
CWindowToolGUI *gui;
};
+class CWindowMaskDrawCenter : public BC_CheckBox
+{
+public:
+ CWindowMaskDrawCenter(MWindow *mwindow, CWindowToolGUI *gui,
+ int x, int y);
+ ~CWindowMaskDrawCenter();
+ int handle_event();
+ MWindow *mwindow;
+ CWindowToolGUI *gui;
+};
+
class CWindowMaskDrawMarkers : public BC_CheckBox
{
public:
SubMask* &mask, MaskPoint* &point, int create_it);
void update_preview();
+ CWindowMaskTrack *mask_track;
CWindowMaskName *name;
CWindowMaskButton *mask_buttons[SUBMASKS];
CWindowMaskThumbler *mask_thumbler;
CWindowCoord *x, *y;
CWindowMaskFocus *focus;
int focused;
+ CWindowMaskDrawCenter *draw_center;
+ int center_mark;
CWindowMaskDrawMarkers *draw_markers;
int markers;
CWindowMaskDrawBoundary *draw_boundary;
class CWindowCoord;
class CWindowCropOK;
class CWindowCropGUI;
+class CWindowMaskTrack;
class CWindowMaskItems;
class CWindowMaskName;
class CWindowMaskDelMask;
class CWindowMaskGangFader;
class CWindowMaskAffectedPoint;
class CWindowMaskFocus;
+class CWindowMaskDrawCenter;
class CWindowMaskDrawMarkers;
class CWindowMaskDrawBoundary;
class CWindowMaskDelPoint;
return 0;
}
+int EDL::clear_hard_edges(double start, double end)
+{
+ return tracks->clear_hard_edges(start, end);
+}
+
static int dead_edit_cmp(Edit**ap, Edit**bp)
{
Edit *a = *ap, *b = *bp;
int clear_labels,
int clear_plugins,
int edit_autos);
- void deglitch(double position);
+ int clear_hard_edges(double start, double end);
// Insert the asset at a point in the EDL
void insert_asset(Asset *asset,
EDL *nested_edl,
editmenu->add_item(new Cut(mwindow));
editmenu->add_item(new Copy(mwindow));
editmenu->add_item(new Paste(mwindow));
- editmenu->add_item(new Clear(mwindow));
editmenu->add_item(new PasteSilence(mwindow));
- editmenu->add_item(new MuteSelection(mwindow));
+ editmenu->add_item(clear_menu = new EditClearMenu(mwindow));
+ clear_menu->create_objects();
editmenu->add_item(new TrimSelection(mwindow));
editmenu->add_item(new SelectAll(mwindow));
editmenu->add_item(new BC_MenuItem("-"));
editmenu->add_item(new MenuTransitionLength(mwindow));
editmenu->add_item(new DetachTransitions(mwindow));
editmenu->add_item(new BC_MenuItem("-"));
- editmenu->add_item(new ClearLabels(mwindow));
editmenu->add_item(new CutCommercials(mwindow));
editmenu->add_item(new PasteSubttl(mwindow));
return 1;
}
+EditClearSubMenu::EditClearSubMenu(BC_MenuItem *menu_item)
+ : BC_SubMenu()
+{
+ this->menu_item = menu_item;
+}
+EditClearSubMenu::~EditClearSubMenu()
+{
+}
+
+EditClearMenu::EditClearMenu(MWindow *mwindow)
+ : BC_MenuItem(_("Clear..."))
+{
+ this->mwindow = mwindow;
+ this->clear_sub_menu = 0;
+}
+EditClearMenu::~EditClearMenu()
+{
+}
+
+void EditClearMenu::create_objects()
+{
+ add_submenu(clear_sub_menu = new EditClearSubMenu(this));
+ clear_sub_menu->add_item(new Clear(mwindow));
+ clear_sub_menu->add_item(new MuteSelection(mwindow));
+ clear_sub_menu->add_item(new ClearHardEdges(mwindow));
+ clear_sub_menu->add_item(new ClearLabels(mwindow));
+};
+
Clear::Clear(MWindow *mwindow)
: BC_MenuItem(_("Clear"), _("Del"), DELETE)
{
return 1;
}
+ClearHardEdges::ClearHardEdges(MWindow *mwindow) : BC_MenuItem(_("Clear Hard Edges"))
+{
+ this->mwindow = mwindow;
+}
+
+int ClearHardEdges::handle_event()
+{
+ mwindow->clear_hard_edges();
+ return 1;
+}
+
ClearLabels::ClearLabels(MWindow *mwindow) : BC_MenuItem(_("Clear labels"))
{
this->mwindow = mwindow;
MenuVEffectItem *veffect[TOTAL_EFFECTS];
Quit *quit_program; // affected by save
MainDumpsMenu *dump_menu;
+ EditClearMenu *clear_menu;
Undo *undo;
Redo *redo;
int total_aeffects;
MWindow *mwindow;
};
+class EditClearSubMenu : public BC_SubMenu
+{
+public:
+ EditClearSubMenu(BC_MenuItem *menu_item);
+ ~EditClearSubMenu();
+
+ BC_MenuItem *menu_item;
+};
+
+class EditClearMenu : public BC_MenuItem
+{
+public:
+ EditClearMenu(MWindow *mwindow);
+ ~EditClearMenu();
+ void create_objects();
+
+ MWindow *mwindow;
+ EditClearSubMenu *clear_sub_menu;
+};
+
class Clear : public BC_MenuItem
{
public:
MWindow *mwindow;
};
+class ClearHardEdges : public BC_MenuItem
+{
+public:
+ ClearHardEdges(MWindow *mwindow);
+ int handle_event();
+ MWindow *mwindow;
+};
+
class ClearLabels : public BC_MenuItem
{
public:
class Cut;
class Copy;
class Paste;
+class EditClearSubMenu;
+class EditClearMenu;
class Clear;
class CutKeyframes;
class CopyKeyframes;
class ClearDefaultKeyframe;
class PasteSilence;
class SelectAll;
+class ClearHardEdges;
class ClearLabels;
class CutCommercials;
class DetachTransitions;
class MixerItems;
class MixerViewer;
class TileMixers;
+class AlignMixers;
class AddAudioTrack;
class DeleteAudioTrack;
class DefaultATransition;
void clear(int clear_handle);
void clear_labels();
int clear_labels(double start, double end);
+ void clear_hard_edges();
+ int clear_hard_edges(double start, double end);
void concatenate_tracks();
int copy_flags(int copy_flags=COPY_CLIPBOARD);
void copy();
int MWindow::clear_labels(double start, double end)
{
+ if( start == end ) {
+ start = 0;
+ end = edl->tracks->total_length();
+ }
edl->labels->clear(start, end, 0);
return 0;
}
+void MWindow::clear_hard_edges()
+{
+ undo_before();
+ clear_hard_edges(edl->local_session->get_selectionstart(),
+ edl->local_session->get_selectionend());
+ edl->optimize();
+ save_backup();
+ undo_after(_("clear hard edges"), LOAD_EDITS);
+ restart_brender();
+ gui->update(1, NORMAL_DRAW, 0, 0, 1, 0, 0);
+ cwindow->refresh_frame(CHANGE_EDL);
+}
+
+int MWindow::clear_hard_edges(double start, double end)
+{
+ if( start == end ) {
+ start = 0;
+ end = edl->tracks->total_length();
+ }
+ edl->clear_hard_edges(start, end);
+ return 0;
+}
+
void MWindow::concatenate_tracks()
{
undo_before();
vertex[1] = coords[1];
vertex[2] = coords[2];
for( int i=3; i<6; ++i ) {
- vertex[i] = weight[0] * vertex_data[0][i] +
- weight[1] * vertex_data[1][i] +
- weight[2] * vertex_data[2][i] +
- weight[3] * vertex_data[3][i];
+ GLdouble v = 0;
+ for( int k=0; k<4; ++k ) {
+ if( !weight[k] || !vertex_data[k] ) continue;
+ v += weight[k] * vertex_data[k][i];
+ }
+ vertex[i] = v;
}
*outData = vertex;
}
// Construct a list of all the recordable edits which start on position
void clear_selected_edits();
void select_affected_edits(double position, Track *start_track, int sense);
+ int clear_hard_edges(double start, double end);
void get_selected_edits(ArrayList<Edit*> *drag_edits);
int next_group_id();
int new_group(int id);
}
}
+int Tracks::clear_hard_edges(double start, double end)
+{
+ for( Track *track=first; track; track=track->next ) {
+ if( !track->record ) continue;
+ int64_t start_units = track->to_units(start, 0);
+ int64_t end_units = track->to_units(end, 0);
+
+ for( Edit *edit=track->edits->first; edit; edit=edit->next ) {
+ if( edit->startproject < start_units ) continue;
+ if( edit->startproject >= end_units ) continue;
+ edit->hard_left = 0;
+ if( !edit->previous ) continue;
+ edit->previous->hard_right = 0;
+ }
+ }
+ return 0;
+}
+
void Tracks::shuffle_edits(double start, double end)
{
// This doesn't affect automation or effects
#include "bcresources.h"
#include "bctitle.h"
-#include "bcresources.h"
+#include "bcpixmap.h"
+#include "vframe.h"
#include <string.h>
#include <unistd.h>
int BC_Title::draw(int flush)
{
- int i, j, x, y;
-
// Fix background for block fonts.
// This should eventually be included in a BC_WindowBase::is_blocked_font()
set_font(font);
BC_WindowBase::set_color(color);
- int text_len = strlen(text);
- j = 0; x = 0; y = get_text_ascent(font);
- for(i = 0; i <= text_len; i++)
- {
- if(text[i] == '\n' || text[i] == 0)
- {
- if(centered)
- {
- draw_center_text(get_w() / 2,
- y,
- &text[j],
- i - j);
- j = i + 1;
- }
- else
- {
- draw_text(x,
- y,
- &text[j],
- i - j);
- j = i + 1;
- }
- y += get_text_height(font);
- }
+ return draw(flush, 0, 0);
+}
+
+int BC_Title::draw(int flush, int x, int y)
+{
+ y += get_text_ascent(font);
+ int len = strlen(text);
+ for( int i=0,j=0; i<=len; ++i ) {
+ if( text[i] && text[i] != '\n' ) continue;
+ if( centered )
+ draw_center_text(get_w()/2, y, &text[j], i - j);
+ else
+ draw_text(x, y, &text[j], i - j);
+ j = i + 1;
+ y += get_text_height(font);
}
set_font(MEDIUMFONT); // reset
flash(flush);
w += 5;
if(fixed_w > 0) w = fixed_w;
}
+
+
+BC_TitleBar::BC_TitleBar(int x, int y, int w, int offset, int margin,
+ const char *text, int font, int color, VFrame *data)
+: BC_Title(x, y, text, font, color, 0, w)
+{
+ this->offset = offset;
+ this->margin = margin;
+ this->data = data;
+ image = 0;
+}
+
+BC_TitleBar::~BC_TitleBar()
+{
+ delete image;
+}
+
+void BC_TitleBar::set_image(VFrame *data)
+{
+ delete image;
+ image = new BC_Pixmap(get_parent_window(), data, PIXMAP_ALPHA);
+}
+
+int BC_TitleBar::initialize()
+{
+ if(data)
+ set_image(data);
+ else
+ set_image(get_resources()->bar_data);
+ BC_Title::initialize();
+ draw(0);
+ return 0;
+}
+
+int BC_TitleBar::draw(int flush)
+{
+ int w = get_w(), h = get_h(), h2 = h/2;
+ draw_top_background(get_parent_window(), 0, 0,w, h);
+ draw_3segmenth(0,h2, offset, 0, offset, image);
+ int tx = offset + margin, tw, th;
+ set_font(font);
+ BC_WindowBase::set_color(color);
+ BC_Title::draw(flush, tx, 0);
+ get_size(get_parent_window(), font, text, 0, tw, th);
+ tx += tw + margin;
+ draw_3segmenth(tx,h2, w-tx, tx,w-tx, image);
+ flash(flush);
+ return 0;
+}
+
#include "bccolors.h"
#include "fonts.h"
+class BC_TitleBar;
+
class BC_Title : public BC_SubWindow
{
+ friend class BC_TitleBar;
public:
BC_Title(int x,
int y,
char* get_text();
private:
- int draw(int flush);
+ int draw(int flush, int x, int y);
+ virtual int draw(int flush);
static void get_size(BC_WindowBase *gui, int font, const char *text, int fixed_w, int &w, int &h);
+ BC_WindowBase *get_parent_window() { return parent_window; }
char text[BCTEXTLEN];
int color;
int fixed_w;
};
+class BC_TitleBar : public BC_Title
+{
+public:
+ BC_TitleBar(int x, int y, int w, int offset, int margin,
+ const char *text, int font = MEDIUMFONT,
+ int color = -1, VFrame *data = 0);
+ virtual ~BC_TitleBar();
+
+ int initialize();
+ void set_image(VFrame *data);
+
+ int w, offset, margin;
+ VFrame *data;
+ BC_Pixmap *image;
+private:
+ int draw(int flush);
+};
+
#endif
new_image("cbuttons_left", "cbuttons_left.png");
new_image("cbuttons_right", "cbuttons_right.png");
new_image("cmeter_bg", "cmeter_bg.png");
+ new_image("cwindow_focus", "cwindow_focus.png");
// VWindow
new_image("vbuttons_left", "vbuttons_left.png");
cbuttons_left = new_image("cbuttons_left.png");
cbuttons_right = new_image("cbuttons_right.png");
cmeter_bg = new_image("cmeter_bg.png");
+ new_image("cwindow_focus", "cwindow_focus.png");
ctimebar_x = ccanvas_x;
ctimebar_y = ccanvas_y + ccanvas_h;
new_image("cbuttons_left", "cbuttons_left.png");
new_image("cbuttons_right", "cbuttons_right.png");
new_image("cmeter_bg", "cmeter_bg.png");
+ new_image("cwindow_focus", "cwindow_focus.png");
// VWindow
new_image("vbuttons_left", "vbuttons_left.png");
new_image("cbuttons_left", "cbuttons_left.png");
new_image("cbuttons_right", "cbuttons_right.png");
new_image("cmeter_bg", "cmeter_bg.png");
+ new_image("cwindow_focus", "cwindow_focus.png");
new_image("vbuttons_left", "vbuttons_left.png");
new_image("vbuttons_right", "vbuttons_right.png");
timebar_view_data = new_image("timebar_view.png");
new_image("cbuttons_left", "cbuttons_left.png");
new_image("cbuttons_right", "cbuttons_right.png");
new_image("cmeter_bg", "cmeter_bg.png");
+ new_image("cwindow_focus", "cwindow_focus.png");
// VWindow
new_image("vbuttons_left", "vbuttons_left.png");
new_image("cbuttons_left", "cbuttons_left.png");
new_image("cbuttons_right", "cbuttons_right.png");
new_image("cmeter_bg", "cmeter_bg.png");
+ new_image("cwindow_focus", "cwindow_focus.png");
new_image("vbuttons_left", "vbuttons_left.png");
new_image("vbuttons_right", "vbuttons_right.png");
new_image("vclock", "vclock.png");
new_image("cbuttons_left", "cbuttons_left.png");
new_image("cbuttons_right", "cbuttons_right.png");
new_image("cmeter_bg", "cmeter_bg.png");
+ new_image("cwindow_focus", "cwindow_focus.png");
// VWindow
new_image("vbuttons_left", "vbuttons_left.png");
new_image("cbuttons_left", "cbuttons_left.png");
new_image("cbuttons_right", "cbuttons_right.png");
new_image("cmeter_bg", "cmeter_bg.png");
+ new_image("cwindow_focus", "cwindow_focus.png");
// VWindow
/* The red position indicator is currently only 5 px high.
new_image("cbuttons_left", "cbuttons_left.png");
new_image("cbuttons_right", "cbuttons_right.png");
new_image("cmeter_bg", "cmeter_bg.png");
+ new_image("cwindow_focus", "cwindow_focus.png");
// VWindow
new_image("vbuttons_left", "vbuttons_left.png");
new_image("cbuttons_left", "cbuttons_left.png");
new_image("cbuttons_right", "cbuttons_right.png");
new_image("cmeter_bg", "cmeter_bg.png");
+ new_image("cwindow_focus", "cwindow_focus.png");
// VWindow
new_image("vbuttons_left", "vbuttons_left.png");
new_image("cbuttons_left", "cbuttons_left.png");
new_image("cbuttons_right", "cbuttons_right.png");
new_image("cmeter_bg", "cmeter_bg.png");
+ new_image("cwindow_focus", "cwindow_focus.png");
// VWindow
new_image("vbuttons_left", "vbuttons_left.png");