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); }
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); }
/* 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); }
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); }
/* 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); }
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; }