123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #include <precomp.h>
- #include "seqband.h"
- #include <api/core/api_core.h>
- #define NOTIFYMSG_EQ_HELLO 0x3003
- const wchar_t eqBandXuiStr[] = L"EqBand"; // This is the xml tag
- char eqBandXuiSvcName[] = "EqBand xui object"; // this is the name of the xuiservice
- XMLParamPair SEQBand::params[] = {
- {SEQBAND_SETPARAM, L"BAND"},
- {SEQBAND_SETPARAM, L"PARAM"},
- };
- SEQBand::SEQBand() {
- band = 0;
- setDrawOnBorders(TRUE);
- setEnable(TRUE);
- setHotPosition(0);
- isactive=0;
- discard_next_event = 0;
- xuihandle = newXuiHandle();
- CreateXMLParameters(xuihandle);
- setLimits(-127,127);
- }
- void SEQBand::CreateXMLParameters(int master_handle)
- {
- //SEQBAND_PARENT::CreateXMLParameters(master_handle);
- int numParams = sizeof(params) / sizeof(params[0]);
- hintNumberOfParams(xuihandle, numParams);
- for (int i = 0;i < numParams;i++)
- addParam(xuihandle, params[i], XUI_ATTRIBUTE_IMPLIED);
- }
- SEQBand::~SEQBand() {
- WASABI_API_MEDIACORE->core_delCallback(0, this);
- }
- int SEQBand::setXuiParam(int _xuihandle, int attrid, const wchar_t *name, const wchar_t *strval) {
- if (_xuihandle != xuihandle) return SEQBAND_PARENT::setXuiParam(_xuihandle, attrid, name, strval);
- switch (attrid) {
- case SEQBAND_SETPARAM:
- case SEQBAND_SETBAND:
- setBand(WTOI(strval)-1);
- break;
- default:
- return 0;
- }
- return 1;
- }
- void SEQBand::setBand(int b) {
- band = b;
- }
- int SEQBand::onInit() {
- SEQBAND_PARENT::onInit();
- corecb_onEQBandChange(band, WASABI_API_MEDIACORE->core_getEqBand(0, band));
- WASABI_API_MEDIACORE->core_addCallback(0, this);
- return 1;
- }
- int SEQBand::onSetPosition() {
- setHotPosition((Std::keyDown(VK_SHIFT) ? -1 : 0));
- SEQBAND_PARENT::onSetPosition();
- int pos = getSliderPosition(); // get slider pos
- discard_next_event = 1;
- WASABI_API_MEDIACORE->core_setEqBand(0,band,pos);
- return 1;
- }
- int SEQBand::onResize() {
- SEQBAND_PARENT::onResize();
- invalidate();
- return 1;
- }
- int SEQBand::corecb_onEQBandChange(int b, int newval) {
- if(b!=band) return 0;
- if (discard_next_event) {
- discard_next_event = 0;
- return 0;
- }
- setPosition(newval,0);
- return 0;
- }
- int SEQBand::onLeftButtonDown(int x, int y) {
- isactive=1;
- return SEQBAND_PARENT::onLeftButtonDown(x,y);
- }
- int SEQBand::onMouseMove(int x, int y) {
- if(isactive) {
- ifc_window *parent=getParent();
- if(parent) {
- ifc_window *wnd=parent->findRootWndChild(x,y);
- if(wnd && wnd!=this) {
- if(wnd->childNotify(this,NOTIFYMSG_EQ_HELLO,0,0)) { // will return 1 if it's another EQBand
- onLeftButtonUp(x,y);
- wnd->onLeftButtonDown(x,y);
- }
- }
- }
- }
- return SEQBAND_PARENT::onMouseMove(x,y);
- }
- int SEQBand::onLeftButtonUp(int x, int y) {
- isactive=0;
- return SEQBAND_PARENT::onLeftButtonUp(x,y);
- }
- int SEQBand::childNotify(ifc_window *child, int msg, intptr_t param1, intptr_t param2) {
- if(msg==NOTIFYMSG_EQ_HELLO) return 1;
- return SEQBAND_PARENT::childNotify(child,msg,param1,param2);
- }
|