示例#1
0
文件: light.c 项目: Thump/sceda
void
Set_Light_Attributes(InstanceList objects, Boolean do_spot, Boolean do_area)
{
	InstanceList	elmt;
	char	light_string[20];

	instances = objects;
	spotlight_after = do_spot;
	arealight_after = do_area;

	if ( ! light_shell )
		Create_Light_Dialog();

	for ( elmt = objects ;
		  elmt->the_instance->o_parent->b_class != light_obj ;
		  elmt = elmt->next );

	sprintf(light_string, "%1.2g %1.2g %1.2g",
			((LightInfoPtr)elmt->the_instance->o_attribs)->red,
			((LightInfoPtr)elmt->the_instance->o_attribs)->green,
			((LightInfoPtr)elmt->the_instance->o_attribs)->blue);

	XtVaSetValues(light_dialog, XtNvalue, light_string, NULL);

	SFpositionWidget(light_shell);

	XtPopup(light_shell, XtGrabExclusive);
}
示例#2
0
文件: light.c 项目: Thump/sceda
void
Set_Spotlight_Attributes(InstanceList objects, Boolean do_area)
{
	InstanceList	elmt;
	XawTextBlock	text_block;
	int				old_length;

	instances = objects;
	arealight_after = do_area;

	spotlight_after = FALSE;

	if ( ! spotlight_shell )
		Create_Spotlight_Dialog();

	for ( elmt = objects ;
		  elmt->the_instance->o_parent->b_class != spotlight_obj ;
		  elmt = elmt->next );

	/* Set all the text strings. */
	text_block.firstPos = 0;
	text_block.format = FMT8BIT;
	old_length = strlen(intensity_string);
	sprintf(intensity_string, "%0.2g %0.2g %0.2g", 
			((LightInfoPtr)elmt->the_instance->o_attribs)->red,
			((LightInfoPtr)elmt->the_instance->o_attribs)->green,
			((LightInfoPtr)elmt->the_instance->o_attribs)->blue);
	text_block.length = strlen(intensity_string);
	text_block.ptr = intensity_string;
	XawTextReplace(spotlight_intensity_text, 0, old_length + 1, &text_block);

	old_length = strlen(radius_string);
	sprintf(radius_string, "%0.2g",
			((LightInfoPtr)elmt->the_instance->o_attribs)->val1);
	text_block.length = strlen(radius_string);
	text_block.ptr = radius_string;
	XawTextReplace(radius_text, 0, old_length + 1, &text_block);

	old_length = strlen(tightness_string);
	sprintf(tightness_string, "%0.2g",
			((LightInfoPtr)elmt->the_instance->o_attribs)->val2);
	text_block.length = strlen(tightness_string);
	text_block.ptr = tightness_string;
	XawTextReplace(tightness_text, 0, old_length + 1, &text_block);

	/* Set the inverse toggle. */
	XtVaSetValues(invert_toggle, XtNstate,
				  ((LightInfoPtr)elmt->the_instance->o_attribs)->flag, NULL);

	SFpositionWidget(spotlight_shell);

	XtPopup(spotlight_shell, XtGrabExclusive);
}
示例#3
0
文件: delete.c 项目: Thump/sceda
/*	void
**	Delete_Objects_Callback(Widget w, XtPointer cl_data, XtPointer ca_data)
**	Warns first, then deletes the objects in the selection list.
*/
void
Delete_Objects_Callback(Widget w, XtPointer cl_data, XtPointer ca_data)
{
	current_window = &main_window;

	if ( ! deletion_shell )
		Create_Deletion_Dialog();

	SFpositionWidget(deletion_shell);

	XtPopup(deletion_shell, XtGrabExclusive);
}
示例#4
0
文件: light.c 项目: Thump/sceda
void
Set_Arealight_Attributes(InstanceList objects)
{
	InstanceList	elmt;
	XawTextBlock	text_block;
	int				old_length;

	instances = objects;

	arealight_after = FALSE;

	if ( ! arealight_shell )
		Create_Arealight_Dialog();

	for ( elmt = objects ;
		  elmt->the_instance->o_parent->b_class != arealight_obj ;
		  elmt = elmt->next );

	/* Set all the text strings. */
	text_block.firstPos = 0;
	text_block.format = FMT8BIT;
	old_length = strlen(intensity_string);
	sprintf(intensity_string, "%0.2g %0.2g %0.2g", 
			((LightInfoPtr)elmt->the_instance->o_attribs)->red,
			((LightInfoPtr)elmt->the_instance->o_attribs)->green,
			((LightInfoPtr)elmt->the_instance->o_attribs)->blue);
	text_block.length = strlen(intensity_string);
	text_block.ptr = intensity_string;
	XawTextReplace(arealight_intensity_text, 0, old_length + 1, &text_block);

	old_length = strlen(xnum_string);
	sprintf(xnum_string, "%d",
			(int)(((LightInfoPtr)elmt->the_instance->o_attribs)->val1));
	text_block.length = strlen(xnum_string);
	text_block.ptr = xnum_string;
	XawTextReplace(xnum_text, 0, old_length + 1, &text_block);

	old_length = strlen(ynum_string);
	sprintf(ynum_string, "%d",
			(int)(((LightInfoPtr)elmt->the_instance->o_attribs)->val2));
	text_block.length = strlen(ynum_string);
	text_block.ptr = ynum_string;
	XawTextReplace(ynum_text, 0, old_length + 1, &text_block);

	/* Set the inverse toggle. */
	XtVaSetValues(jitter_toggle, XtNstate,
				  ((LightInfoPtr)elmt->the_instance->o_attribs)->flag, NULL);

	SFpositionWidget(arealight_shell);

	XtPopup(arealight_shell, XtGrabExclusive);
}
示例#5
0
文件: light.c 项目: Thump/sceda
/*	void
**	Ambient_Light_Callback(Widget w, XtPointer cl, XtPointer ca)
**	Pops up the ambient light dialog.
*/
void
Ambient_Light_Callback(Widget w, XtPointer cl, XtPointer ca)
{
	char	ambient_string[20];

	if ( ! ambient_light_shell )
		Create_Ambient_Dialog();

	sprintf(ambient_string, "%1.2g %1.2g %1.2g",
			(double)ambient_light.red / (double)MAX_UNSIGNED_SHORT,
			(double)ambient_light.green / (double)MAX_UNSIGNED_SHORT,
			(double)ambient_light.blue / (double)MAX_UNSIGNED_SHORT);

	XtVaSetValues(ambient_dialog, XtNvalue, ambient_string, NULL);

	SFpositionWidget(ambient_light_shell);

	XtPopup(ambient_light_shell, XtGrabExclusive);
}
示例#6
0
文件: SelFile.c 项目: ellert/graphviz
int
XsraSelFile (
    Widget toplevel, char *prompt, char *ok, char *cancel, char *failed,
    char *init_path, char *mode,
    int (*show_entry) (char *, char **, struct stat *),
    char *name_return, int name_size
) {
    static int firstTime = 1;
    Cardinal   i;
    Arg        arglist[20];
    XEvent     event;

    if (!prompt) {
        prompt = "Pathname:";
    }
    if (!ok) {
        ok = "OK";
    }
    if (!cancel) {
        cancel = "Cancel";
    }
    if (firstTime) {
        firstTime = 0;
        SFdisplay = XtDisplay (toplevel);
        SFcreateWidgets (toplevel, prompt, ok, cancel);
    } else {
        i = 0;
        XtSetArg (arglist[i], XtNlabel, prompt); i++;
        XtSetValues (selFilePrompt, arglist, i);

        i = 0;
        XtSetArg (arglist[i], XtNlabel, ok); i++;
        XtSetValues (selFileOK, arglist, i);

        i = 0;
        XtSetArg (arglist[i], XtNlabel, cancel); i++;
        XtSetValues (selFileCancel, arglist, i);
    }
    SFpositionWidget (selFile);
    XtMapWidget (selFile);

    if (!getcwd (SFstartDir, MAXPATHLEN)) {
        XtAppError (SFapp, "XsraSelFile: can't get current directory");
    }
    strcat (SFstartDir, "/");
    strcpy (SFcurrentDir, SFstartDir);

    if (init_path) {
        if (init_path[0] == '/') {
            strcpy (SFcurrentPath, init_path);
            if (strncmp (SFcurrentPath, SFstartDir, strlen (SFstartDir))) {
                SFsetText (SFcurrentPath);
            } else {
                SFsetText (& (SFcurrentPath[strlen (SFstartDir)]));
            }
        } else {
            strcat (strcpy (SFcurrentPath, SFstartDir), init_path);
            SFsetText (& (SFcurrentPath[strlen (SFstartDir)]));
        }
    } else {
        strcpy (SFcurrentPath, SFstartDir);
    }

    SFfunc = show_entry;

    SFtextChanged ();

    XtAddGrab (selFile, True, True);

    SFdirModTimerId = XtAppAddTimeOut (
        SFapp, (unsigned long) 1000, SFdirModTimer, (XtPointer) NULL
    );

    while (1) {
        XtAppNextEvent (SFapp, &event);
        XtDispatchEvent (&event);
        switch (SFstatus) {
        case SEL_FILE_TEXT:
            SFstatus = SEL_FILE_NULL;
            SFtextChanged ();
            break;
        case SEL_FILE_OK:
            strncpy (name_return, SFtextBuffer, name_size);
            SFprepareToReturn ();
            if (SFworkProcAdded) {
                XtRemoveWorkProc (SFworkProcId);
                SFworkProcAdded = 0;
            }
            return 1;
        case SEL_FILE_CANCEL:
            SFprepareToReturn ();
            return 0;
        case SEL_FILE_NULL:
            break;
        }
    }
    return 0;
}