+++ /dev/null
-
-/*
- * CINELERRA
- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#ifndef BCPAN_H
-#define BCPAN_H
-
-// pan angles
-//
-// 360/0
-//
-// 270 90
-//
-// 180
-
-#include "bcsubwindow.h"
-#include "rotateframe.inc"
-#include "vframe.inc"
-
-#define PAN_UP 0
-#define PAN_HI 1
-#define PAN_POPUP 2
-#define PAN_CHANNEL 3
-#define PAN_STICK 4
-#define PAN_CHANNEL_SMALL 5
-#define PAN_STICK_SMALL 6
-#define PAN_IMAGES 7
-
-
-
-class BC_Pan : public BC_SubWindow
-{
-public:
- BC_Pan(int x,
- int y,
- int virtual_r,
- float maxvalue,
- int total_values,
- int *value_positions,
- int stick_x,
- int stick_y,
- float *values);
- virtual ~BC_Pan();
-
- int initialize();
- int update(int x, int y);
- int button_press_event();
- int cursor_motion_event();
- int button_release_event();
- int cursor_enter_event();
- int cursor_leave_event();
- int repeat_event(int64_t duration);
- virtual int handle_event() { return 0; };
-// change radial positions of channels
- int change_channels(int new_channels, int *value_positions);
-// update values from stick position
- int stick_to_values();
-// Generic conversion from stick to values for channel changes with no GUI
- static int stick_to_values(float *values,
- int total_values,
- int *value_positions,
- int stick_x,
- int stick_y,
- int virtual_r,
- float maxvalue);
- int get_total_values();
- float get_value(int channel);
- int get_stick_x();
- int get_stick_y();
- void set_images(VFrame **data);
- static void calculate_stick_position(int total_values,
- int *value_positions,
- float *values,
- float maxvalue,
- int virtual_r,
- int &stick_x,
- int &stick_y);
- static int rdtoxy(int &x, int &y, int a, int virtual_r);
- int activate(int popup_x = -1, int popup_y = -1);
- int deactivate();
- float* get_values();
-
-private:
- void draw(int flash, int flush);
- void draw_popup();
-// update values from stick position
- static float distance(int x1, int x2, int y1, int y2);
-// get x and y positions of channels
- static int get_channel_positions(int *value_x,
- int *value_y,
- int *value_positions,
- int virtual_r,
- int total_values);
-
- int virtual_r;
- float maxvalue;
- int total_values;
- int *value_positions;
- int stick_x;
- int stick_y;
-// Cursor origin on button press
- int x_origin, y_origin;
-// Stick origin on button press
- int stick_x_origin, stick_y_origin;
- float *values;
- int highlighted;
-// virtual x and y positions
- int *value_x, *value_y;
- int active;
-
-// Used in popup
- BC_Pixmap *images[PAN_IMAGES];
- VFrame *temp_channel;
- RotateFrame *rotater;
- BC_Popup *popup;
-};
-
-#endif