コード例 #1
0
ファイル: MultiKick.cpp プロジェクト: Angeldude/pd
//------------------------------------------------------------------------
void MultiKick::mouse (CDrawContext *pContext, CPoint &where) {
  if (!bMouseEnabled) { buttondown = 0; return; }

  long button = pContext->getMouseButtons ();
  if (!(button & kLButton)) {
    buttondown = 0;
    return;
  }

  /* save old value in case the mouse is dragged off while the
     button is still held down. */

  int entrystate = actualstate;

  if (pContext->getMouseButtons ()) {

    // begin of edit parameter
    getParent ()->beginEdit (tag);
    do {
      if (where.h >= size.left && where.v >= size.top  &&
	  where.h <= size.right && where.v <= size.bottom) {
	actualstate = entrystate + 1;
	actualstate %= numstates;
	buttondown = 1 /* 1 */;
      } else {
	actualstate = entrystate;
	buttondown = 0;
      }
      
      if (isDirty ()) {
	listener->valueChanged (pContext, this);
      }

      pContext->getMouseLocation (where);

      doIdleStuff ();
      draw(pContext);
    } while (pContext->getMouseButtons ());

    setDirty(true);
    // end of edit parameter
    getParent ()->endEdit (tag);
  } else {
    actualstate ++;
    actualstate %= numstates;
  }
  draw(pContext);
  buttondown = 0;
  listener->valueChanged (pContext, this);
}
コード例 #2
0
//------------------------------------------------------------------------
void CMultiStateButton::mouse (CDrawContext *pContext, CPoint &where)
{
	if (!bMouseEnabled)
		return;

 	long button = pContext->getMouseButtons ();
	if (!(button & kLButton))
		return;

	value = (float)(value + 1.0 / (double)(nStates));
	if(value >= 1.0) value = 0.0;

	//draw (pContext);
	doIdleStuff ();
	if (listener)
		listener->valueChanged (pContext, this);
}
コード例 #3
0
ファイル: cSyncButton.cpp プロジェクト: EQ4/miriyaki
//------------------------------------------------------------------------
void cSyncButton::mouse (CDrawContext *pContext, CPoint &where, long button)
{
    if (!bMouseEnabled)
        return;

    if (button == -1) button = pContext->getMouseButtons ();
    if (!(button & kLButton))
        return;

    if (listener && button & (kAlt | kShift | kControl | kApple))
    {
        if (listener->controlModifierClicked (pContext, this, button) != 0)
            return;
    }
    if (button & (kAlt | kShift))
    {
        value = floor(value * statesCount - 1.0f) / (float)statesCount;
        if (value < 0.0f)
            value = (float)(statesCount-1) / (float)statesCount ;
    }
    else
    {
        value = floor(value * statesCount + 1.0f) / (float)statesCount;
        if (value >= 1.0f)
            value = 0.f;
    }
    if (listener && style == kPostListenerUpdate)
    {
        beginEdit ();
        listener->valueChanged (pContext, this);
        endEdit ();
    }
    doIdleStuff ();

    if (listener && style == kPreListenerUpdate)
    {
        beginEdit ();
        listener->valueChanged (pContext, this);
        endEdit ();
    }
}