Beispiel #1
0
//////////////////////////////////////////////////////////////////////////
// high level scripting interface
//////////////////////////////////////////////////////////////////////////
bool PartEmitter::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) {
	//////////////////////////////////////////////////////////////////////////
	// SetBorder
	//////////////////////////////////////////////////////////////////////////
	if (strcmp(name, "SetBorder") == 0) {
		stack->correctParams(4);
		int borderX      = stack->pop()->getInt();
		int borderY      = stack->pop()->getInt();
		int borderWidth  = stack->pop()->getInt();
		int borderHeight = stack->pop()->getInt();

		stack->pushBool(DID_SUCCEED(setBorder(borderX, borderY, borderWidth, borderHeight)));

		return STATUS_OK;
	}
	//////////////////////////////////////////////////////////////////////////
	// SetBorderThickness
	//////////////////////////////////////////////////////////////////////////
	else if (strcmp(name, "SetBorderThickness") == 0) {
		stack->correctParams(4);
		int left   = stack->pop()->getInt();
		int right  = stack->pop()->getInt();
		int top    = stack->pop()->getInt();
		int bottom = stack->pop()->getInt();

		stack->pushBool(DID_SUCCEED(setBorderThickness(left, right, top, bottom)));

		return STATUS_OK;
	}
	//////////////////////////////////////////////////////////////////////////
	// AddSprite
	//////////////////////////////////////////////////////////////////////////
	else if (strcmp(name, "AddSprite") == 0) {
		stack->correctParams(1);
		const char *spriteFile = stack->pop()->getString();
		stack->pushBool(DID_SUCCEED(addSprite(spriteFile)));

		return STATUS_OK;
	}
	//////////////////////////////////////////////////////////////////////////
	// RemoveSprite
	//////////////////////////////////////////////////////////////////////////
	else if (strcmp(name, "RemoveSprite") == 0) {
		stack->correctParams(1);
		const char *spriteFile = stack->pop()->getString();
		stack->pushBool(DID_SUCCEED(removeSprite(spriteFile)));

		return STATUS_OK;
	}

	//////////////////////////////////////////////////////////////////////////
	// Start
	//////////////////////////////////////////////////////////////////////////
	else if (strcmp(name, "Start") == 0) {
		stack->correctParams(1);
		_overheadTime = stack->pop()->getInt();
		stack->pushBool(DID_SUCCEED(start()));

		return STATUS_OK;
	}

	//////////////////////////////////////////////////////////////////////////
	// Stop
	//////////////////////////////////////////////////////////////////////////
	else if (strcmp(name, "Stop") == 0) {
		stack->correctParams(0);

		for (uint32 i = 0; i < _particles.size(); i++) {
			delete _particles[i];
		}
		_particles.clear();

		_running = false;
		stack->pushBool(true);

		return STATUS_OK;
	}

	//////////////////////////////////////////////////////////////////////////
	// Pause
	//////////////////////////////////////////////////////////////////////////
	else if (strcmp(name, "Pause") == 0) {
		stack->correctParams(0);
		_running = false;
		stack->pushBool(true);

		return STATUS_OK;
	}

	//////////////////////////////////////////////////////////////////////////
	// Resume
	//////////////////////////////////////////////////////////////////////////
	else if (strcmp(name, "Resume") == 0) {
		stack->correctParams(0);
		_running = true;
		stack->pushBool(true);

		return STATUS_OK;
	}

	//////////////////////////////////////////////////////////////////////////
	// AddGlobalForce
	//////////////////////////////////////////////////////////////////////////
	else if (strcmp(name, "AddGlobalForce") == 0) {
		stack->correctParams(3);
		const char *forceName = stack->pop()->getString();
		float angle = stack->pop()->getFloat();
		float strength = stack->pop()->getFloat();

		stack->pushBool(DID_SUCCEED(addForce(forceName, PartForce::FORCE_GLOBAL, 0, 0, angle, strength)));

		return STATUS_OK;
	}

	//////////////////////////////////////////////////////////////////////////
	// AddPointForce
	//////////////////////////////////////////////////////////////////////////
	else if (strcmp(name, "AddPointForce") == 0) {
		stack->correctParams(5);
		const char *forceName = stack->pop()->getString();
		int posX = stack->pop()->getInt();
		int posY = stack->pop()->getInt();
		float angle = stack->pop()->getFloat();
		float strength = stack->pop()->getFloat();

		stack->pushBool(DID_SUCCEED(addForce(forceName, PartForce::FORCE_GLOBAL, posX, posY, angle, strength)));

		return STATUS_OK;
	}

	//////////////////////////////////////////////////////////////////////////
	// RemoveForce
	//////////////////////////////////////////////////////////////////////////
	else if (strcmp(name, "RemoveForce") == 0) {
		stack->correctParams(1);
		const char *forceName = stack->pop()->getString();

		stack->pushBool(DID_SUCCEED(removeForce(forceName)));

		return STATUS_OK;
	} else {
		return BaseObject::scCallMethod(script, stack, thisStack, name);
	}
}
Beispiel #2
0
BOOL AP_Win32Dialog_FormatTable::_onCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
    WORD wNotifyCode = HIWORD(wParam);
    WORD wId = LOWORD(wParam);
    HWND hWndCtrl = (HWND)lParam;

    switch (wId)
    {
    case AP_RID_DIALOG_FORMATTABLE_BMP_BOTTOM:
    {
        bool bChecked;
        bChecked = (bool)(IsDlgButtonChecked(m_hwndDlg, AP_RID_DIALOG_FORMATTABLE_BMP_BOTTOM)==BST_CHECKED);
        toggleLineType(AP_Dialog_FormatTable::toggle_bottom, bChecked);
        event_previewExposed();
        return 1;
    }

    case AP_RID_DIALOG_FORMATTABLE_BMP_TOP:
    {
        bool bChecked;
        bChecked = (bool)(IsDlgButtonChecked(m_hwndDlg, AP_RID_DIALOG_FORMATTABLE_BMP_TOP)==BST_CHECKED);
        toggleLineType(AP_Dialog_FormatTable::toggle_top, bChecked);
        event_previewExposed();
        return 1;
    }

    case AP_RID_DIALOG_FORMATTABLE_BMP_RIGHT:
    {
        bool bChecked;
        bChecked = (bool)(IsDlgButtonChecked(m_hwndDlg, AP_RID_DIALOG_FORMATTABLE_BMP_RIGHT)==BST_CHECKED);
        toggleLineType(AP_Dialog_FormatTable::toggle_right, bChecked);
        event_previewExposed();
        return 1;
    }

    case AP_RID_DIALOG_FORMATTABLE_BMP_LEFT:
    {
        bool bChecked;
        bChecked = (bool)(IsDlgButtonChecked(m_hwndDlg, AP_RID_DIALOG_FORMATTABLE_BMP_LEFT)==BST_CHECKED);
        toggleLineType(AP_Dialog_FormatTable::toggle_left, bChecked);
        event_previewExposed();
        return 1;
    }


    case AP_RID_DIALOG_FORMATTABLE_BTN_BORDERCOLOR:
    {
        CHOOSECOLOR cc;
        static COLORREF acrCustClr[16];

        /* Initialize CHOOSECOLOR */
        ZeroMemory(&cc, sizeof(CHOOSECOLOR));
        cc.lStructSize = sizeof(CHOOSECOLOR);
        cc.hwndOwner = m_hwndDlg;
        cc.lpCustColors = (LPDWORD) acrCustClr;
        cc.rgbResult = 0;
        cc.Flags = CC_FULLOPEN | CC_RGBINIT;

        if(ChooseColor(&cc))
        {
            setBorderColor(UT_RGBColor(GetRValue( cc.rgbResult), GetGValue(cc.rgbResult), GetBValue(cc.rgbResult)));
            m_borderButton.setColour(cc.rgbResult);

            /*Force redraw*/
            InvalidateRect(GetDlgItem(hWnd, AP_RID_DIALOG_FORMATTABLE_BTN_BORDERCOLOR), NULL, FALSE);
            event_previewExposed();
        }

        return 1;
    }


    case AP_RID_DIALOG_FORMATTABLE_BTN_BACKCOLOR:
    {
        CHOOSECOLOR cc;
        static COLORREF acrCustClr2[16];

        /* Initialize CHOOSECOLOR */
        ZeroMemory(&cc, sizeof(CHOOSECOLOR));
        cc.lStructSize = sizeof(CHOOSECOLOR);
        cc.hwndOwner = m_hwndDlg;
        cc.lpCustColors = (LPDWORD) acrCustClr2;
        cc.rgbResult = 0;
        cc.Flags = CC_FULLOPEN | CC_RGBINIT;

        if(ChooseColor(&cc))
        {
            setBackgroundColor(UT_RGBColor(GetRValue( cc.rgbResult), GetGValue(cc.rgbResult), GetBValue(cc.rgbResult)));
            m_backgButton.setColour(cc.rgbResult);

            /*Force redraw*/
            InvalidateRect(GetDlgItem(hWnd, AP_RID_DIALOG_FORMATTABLE_BTN_BACKCOLOR), NULL, FALSE);
            event_previewExposed();
        }

        return 1;
    }

    case AP_RID_DIALOG_FORMATTABLE_COMBO_THICKNESS:
    {
        if (wNotifyCode == CBN_SELCHANGE)
        {
            int nSelected;
            HWND hCombo = GetDlgItem(hWnd, AP_RID_DIALOG_FORMATTABLE_COMBO_THICKNESS);
            nSelected = SendMessage(hCombo, CB_GETCURSEL, 0, 0);

            if (nSelected != CB_ERR)
            {
                char szThickness[1024];
                UT_UTF8String sThicknessTable;

                SendMessage(hCombo, CB_GETLBTEXT, nSelected, (LPARAM)szThickness);
                sThicknessTable = szThickness;
                setBorderThickness(sThicknessTable);
                /*Force redraw*/
                InvalidateRect(GetDlgItem(hWnd, AP_RID_DIALOG_FORMATTABLE_BTN_BACKCOLOR), NULL, FALSE);
                event_previewExposed();
            }
        }
        return 1;
    }


    case AP_RID_DIALOG_FORMATTABLE_BTN_CANCEL:
        m_answer = AP_Dialog_FormatTable::a_CLOSE;
        destroy();
        EndDialog(hWnd,0);
        return 1;

    case AP_RID_DIALOG_FORMATTABLE_BTN_APPLY:
    {
        int nSelected, nData = FORMAT_TABLE_SELECTION;

        HWND hCombo = GetDlgItem(hWnd, AP_RID_DIALOG_FORMATTABLE_COMBO_APPLYTO);

        nSelected = SendMessage(hCombo, CB_GETCURSEL, 0, 0);

        if (nSelected!=CB_ERR)
            nData  = SendMessage(hCombo, CB_GETITEMDATA, nSelected, 0);

        setApplyFormatTo((_FormatTable) nData);

        m_answer = AP_Dialog_FormatTable::a_OK;
        applyChanges();
        return 1;
    }

    case AP_RID_DIALOG_FORMATTABLE_BUTTON_SELIMAGE:
        askForGraphicPathName();
        return 1;

    case AP_RID_DIALOG_FORMATTABLE_BUTTON_NOIMAGE:
        clearImage();
        return 1;


    default:							// we did not handle this notification
        UT_DEBUGMSG(("WM_Command for id %ld\n",wId));
        return 0;						// return zero to let windows take care of it.
    }
}