static Object *bitmap_new(Class *cl, Object *obj, struct pRoot_New *msg) { struct TagItem tags[] = { {aHidd_BitMap_AllocBuffer, FALSE }, {TAG_MORE , (IPTR) NULL} }; struct HIDDBitMapAmigaIntuiData *data; struct TagItem *tag, *tstate, *newTagList; BOOL ok = FALSE; struct pRoot_New new_msg; struct pHidd_BitMap_PrivateSet private_set_msg; ULONG width, height, depth, format; BOOL displayable; EnterFunc(bug("BitMapAmigaIntui::New()\n")); new_msg.mID = GetMethodID(IID_Root, moRoot_New); private_set_msg.mID = GetMethodID(IID_Hidd_BitMap, moHidd_BitMap_PrivateSet); displayable = (BOOL) GetTagData(aHidd_BitMap_Displayable, 0, msg->attrList); if(!displayable) { /* let the superclass do all work */ obj = (Object *) DoSuperMethod(cl, obj, (Msg) msg); if(obj) ok = TRUE; } else { /* aHidd_BitMap_AllocBuffer and aHidd_BitMap_Displayable must be FALSE. To make this easy first a copy of the taglist is created. In the new list Hidd_BitMap_Displayable is set to FALSE. If the taglist contains a "aHidd_BitMap_AllocBuffer" tag then ti_Data is set to FALSE else tags(see above) is connected with the new list. NOTE: If msg.attrList contains more than one "aHidd_BitMap_AllocBuffer" we have a problem. */ newTagList = CloneTagItems(msg->attrList); if(newTagList) { tag = FindTagItem(aHidd_BitMap_Displayable, newTagList); if(tag) { tag->ti_Data = FALSE; } tag = FindTagItem(aHidd_BitMap_AllocBuffer, newTagList); if(tag) { tag->ti_Data = FALSE; new_msg.attrList = newTagList; } else { tags[1].ti_Data = (IPTR) newTagList; new_msg.attrList = tags; } obj = (Object *) DoSuperMethod(cl, obj, (Msg) &new_msg); FreeTagItems(newTagList); } if(obj) { data = INST_DATA(cl, obj); /* clear all data and set some default values */ memset(data, 0, sizeof(struct HIDDBitMapAmigaIntuiData)); GetAttr(obj, aHidd_BitMap_Width, &width); GetAttr(obj, aHidd_BitMap_Height, &height); GetAttr(obj, aHidd_BitMap_Depth, &depth); GetAttr(obj, aHidd_BitMap_Format, &format); if(format == vHIDD_BitMap_Format_Planar) { /* only displayable support for planar format */ struct TagItem tags[] = { {SA_Left , 0}, {SA_Top , 0}, {SA_Width , width}, {SA_Height , height}, {SA_Depth , depth}, {TAG_SKIP , 1}, /* Use SA_DisplayID only wenn a display mode */ {SA_DisplayID, 0}, /* is specified */ {SA_Title , (ULONG) "AROS graphics hidd"}, {SA_Type , CUSTOMSCREEN}, /* Will be use later */ /* SA_Quiet , TRUE, */ /* SA_BitMap , 0 On V37 double buffering could only implemented with a custom bitmap */ {TAG_DONE, 0} }; data->screen = OpenScreenTagList(NULL, tags); if(data->screen) { struct TagItem set[] = { {aHidd_BitMap_BaseAddress, (IPTR) &data->screen->RastPort.BitMap->Planes[0]}, {aHidd_BitMap_Format , vHIDD_BitMap_Format_Planar}, {aHidd_BitMap_Displayable, TRUE }, {aHidd_BitMap_BytesPerRow, data->screen->RastPort.BitMap->BytesPerRow}, {TAG_END , 0 } }; private_set_msg.attrList = set; DoSuperMethod(cl, obj, (Msg) &private_set_msg); ok = TRUE; } /* if(data->screen) */ } /* if(format == vHIDD_BitMap_Format_Planar) */ } /* if(obj) */ } /* if(!displayable) */ /* free all on error */ if(ok == FALSE) { if(obj) DisposeObject(obj); obj = NULL; } ReturnPtr("BitMapAmigaIntui::New", Object *, obj); }
void SVGIFrameElement::GetName(DOMString& name) { GetAttr(kNameSpaceID_None, nsGkAtoms::name, name); }
EFFECTEXEC(frame,tags,PPTBase,EffectBase) { ULONG sig, rc, *args; BOOL quit = FALSE, reallyrexx = FALSE; FRAME *newframe = NULL, *with = NULL; struct gFixRectMessage gfr = {0}; ULONG fc, wc; struct Values *av; D(bug(MYNAME": Exec()\n")); /* * Defaults */ v.ratio = 128; v.method = Direct; v.bounds.Top = v.bounds.Left = ~0; v.bounds.Width = 200; v.bounds.Height = 100; v.tile = FALSE; if( av = GetOptions(MYNAME) ) { v = *av; } /* * Copy to local variables */ BGUIBase = PPTBase->lb_BGUI; IntuitionBase = (struct IntuitionBase *)PPTBase->lb_Intuition; DOSBase = PPTBase->lb_DOS; SysBase = PPTBase->lb_Sys; /* * Parse AREXX message, which has to exist. * BUG: If necessary, should wait for D&D from the main window. * BUG: Should make sanity checks! */ args = (ULONG *) TagData( PPTX_RexxArgs, tags ); if( args ) { /* WITH */ if( args[0] ) { with = FindFrame( (ID) PEEKL(args[0]) ); if(!with) { SetErrorMsg(frame,"Unknown frame ID for WITH parameter"); return NULL; } } /* TOP */ if( args[1] ) { gfr.y = (WORD) PEEKL(args[1]); reallyrexx = TRUE; } /* LEFT */ if( args[2] ) { gfr.x = (WORD) PEEKL(args[2]); reallyrexx = TRUE; } /* METHOD */ if( args[3] ) { int i; for( i = 0; method_labels[i]; i++ ) { if(stricmp( method_labels[i], (char *)args[3] ) == 0 ) { v.method = i; reallyrexx = TRUE; break; } } } /* RATIO */ if( v.method == Mix ) { if( args[4] ) { v.ratio = PEEKL( args[4] ); } else { SetErrorCode(frame,PERR_INVALIDARGS); } } /* TILE */ if( args[5] ) { v.tile = TRUE; } else { v.tile = FALSE; } } else { SetErrorMsg(frame,"Image compositing can be used with Drag&Drop (or REXX) only"); return NULL; } /* * Make some sanity checks */ if( frame->pix->width < with->pix->width || frame->pix->height < with->pix->height ) { SetErrorMsg(frame,"You cannot composite a larger picture on a smaller one!"); return NULL; } fc = frame->pix->colorspace; wc = with->pix->colorspace; if( ! (wc == fc || (fc == CS_ARGB && wc == CS_RGB) || (fc == CS_RGB && wc == CS_ARGB ))) { SetErrorMsg(frame, "Only images of the same color space can be composited"); return NULL; } gfr.dim.Left = 0; gfr.dim.Top = 0; gfr.dim.Height = with->pix->height; gfr.dim.Width = with->pix->width; /* * Open window and start parsing */ if( reallyrexx == FALSE ) { if( GimmeWindow(frame, with, PPTBase) ) { ULONG sigmask, gimask = 0L; GetAttr( WINDOW_SigMask, Win, &sigmask ); StartInput(frame, GINP_FIXED_RECT, (struct PPTMessage *) &gfr); gimask = (1 << PPTBase->mport->mp_SigBit); while( !quit ) { sig = Wait( sigmask|gimask|SIGBREAKF_CTRL_C|SIGBREAKF_CTRL_F ); if( sig & SIGBREAKF_CTRL_C ) { D(bug("BREAK!\n")); SetErrorCode( frame, PERR_BREAK ); quit = TRUE; break; } if( sig & SIGBREAKF_CTRL_F ) { WindowToFront(win); ActivateWindow(win); } if( sig & gimask ) { struct gFixRectMessage *pmsg; if(pmsg = (struct gFixRectMessage *)GetMsg( PPTBase->mport )) { if( pmsg->msg.code == PPTMSG_FIXED_RECT ) { D(bug("User picked a point @ (%d,%d)\n",pmsg->x, pmsg->y)); gfr.x = pmsg->x; gfr.y = pmsg->y; // SetGadgetAttrs( ( struct Gadget *)OKButton, win, NULL, GA_Disabled, FALSE ); } ReplyMsg( (struct Message *)pmsg ); } } if( sig & sigmask ) { while( (rc = HandleEvent( Win )) != WMHI_NOMORE ) { ULONG t; switch(rc) { case GID_OK: GetAttr( CYC_Active, Method, (ULONG *)&v.method ); GetAttr( SLIDER_Level, Ratio, &v.ratio ); /* * Save the window attributes for later retrieval. */ GetAttr( WINDOW_Bounds, Win, (ULONG *) &v.bounds ); GetAttr( GA_Selected, Tile, &t ); StopInput( frame ); v.tile = (BOOL) t; WindowClose(Win); newframe = DoComposite( frame, with, &gfr, v.method, (WORD) v.ratio, v.tile, PPTBase ); quit = TRUE; break; case GID_CANCEL: quit = TRUE; StopInput( frame ); break; } } } } } } else { /* gfr is already set up */ newframe = DoComposite( frame, with, &gfr, v.method, (WORD) v.ratio, v.tile, PPTBase ); } if(Win) DisposeObject(Win); if( newframe ) { PutOptions( MYNAME, &v, sizeof(struct Values) ); } D(bug("Returning %08X...\n",newframe)); return newframe; }
void EventLoop(void) { ULONG signal = NULL, rc; BOOL running = TRUE; GetAttr( WINDOW_SigMask, WO_Window, &signal ); if(signal) { do { if(Wait(signal | SIGBREAKF_CTRL_C) & SIGBREAKF_CTRL_C ) { running=FALSE; } while (( rc = HandleEvent( WO_Window )) != WMHI_NOMORE ) { switch(rc) { case WMHI_CLOSEWINDOW: running=FALSE; break; case ACTID_OPEN: { if(DoMethod( openreq, FRM_DOREQUEST ) == FRQ_OK) { char *file = NULL; GetAttr( FRQ_Path, openreq, (ULONG *) &file); NewSettings(file); GUINewSettings(); } break; } case ACTID_SAVEAS: { FillUnit(); if(DoMethod( savereq, FRM_DOREQUEST ) == FRQ_OK) { char *file = NULL; GetAttr( FRQ_Path, savereq, (ULONG *) &file); SaveSettings(file, UnitList); if(SaveIcons) { WriteIcon(file); } } break; } case ACTID_ABOUT: Req( (char *) msgButtonOK, (char *) msgTextCopyright, ISEQ_C, msgTextProgramName, "1996-2004 Martin Blom" ); break; case ACTID_SAVE: FillUnit(); SaveSettings(ENVFILE, UnitList); SaveSettings(ENVARCFILE, UnitList); running=FALSE; break; case ACTID_USE: FillUnit(); SaveSettings(ENVFILE, UnitList); running=FALSE; break; case ACTID_QUIT: running=FALSE; break; case ACTID_DEFAULT: NewSettings(NULL); GUINewSettings(); break; case ACTID_LASTSAVED: NewSettings(ENVARCFILE); GUINewSettings(); break; case ACTID_RESTORE: NewSettings(args.from); GUINewSettings(); break; case ACTID_ICONS: { struct MenuItem *item; item = FindMenuItem(ACTID_ICONS); if(item) { if(item->Flags & CHECKED) SaveIcons = TRUE; else SaveIcons = FALSE; } break; } case ACTID_HELP: { APTR lock = BGUI_LockWindow(window); if(!BGUI_Help( window, HELPFILE, "AHI", NULL)) { Req( (char *) msgButtonOK, (char *) msgTextNoFind, HELPFILE); } BGUI_UnlockWindow(lock); break; } case ACTID_GUIDE: { APTR lock = BGUI_LockWindow(window); if(!BGUI_Help( window, HELPFILE, NULL, NULL)) { Req( (char *) msgButtonOK, (char *) msgTextNoFind, HELPFILE); } BGUI_UnlockWindow(lock); break; } case ACTID_HELPINDEX: { APTR lock = BGUI_LockWindow(window); if(!BGUI_Help( window, HELPFILE, "Concept Index", 0)) { Req( (char *) msgButtonOK, (char *) msgTextNoFind, HELPFILE); } BGUI_UnlockWindow(lock); break; } case ACTID_UNIT: { ULONG unit; FillUnit(); GetAttr( CYC_Active, Window_Objs[rc], &unit); NewUnit(unit); GUINewUnit(); break; } case ACTID_MODE: { ULONG mode; FillUnit(); GetAttr( LISTV_LastClickedNum, Window_Objs[rc], &mode); NewMode(mode); GUINewMode(); break; } case ACTID_DEBUG: case ACTID_SURROUND: case ACTID_ECHO: case ACTID_CPULIMIT: case ACTID_CLIPMV: { ULONG debug = AHI_DEBUG_NONE, surround = FALSE, echo = 0, cpu = 90; ULONG clip = FALSE; GetAttr( CYC_Active, Window_Objs[ACTID_DEBUG], &debug); GetAttr( CYC_Active, Window_Objs[ACTID_SURROUND], &surround); GetAttr( CYC_Active, Window_Objs[ACTID_ECHO], &echo); GetAttr( CYC_Active, Window_Objs[ACTID_CLIPMV], &clip); GetAttr( SLIDER_Level, Window_Objs[ACTID_CPULIMIT], &cpu); globalprefs.ahigp_DebugLevel = debug; globalprefs.ahigp_DisableSurround = surround; globalprefs.ahigp_DisableEcho = (echo == 2); globalprefs.ahigp_FastEcho = (echo == 1); globalprefs.ahigp_MaxCPU = (cpu << 16) / 100; globalprefs.ahigp_ClipMasterVolume= clip; break; } } } } while(running); } }
BOOL BuildGUI(char *screenname) { Object **ar = Window_Objs; struct Screen *screen; BOOL OptionFrame = FALSE; LONG indicatorwidth = 100; UpdateStrings(); // Kludge for Piccaso 96/BGUI. if(FindTask("Picasso96")) { PopUpMenus = FALSE; } BGUIBase = (void *)OpenLibrary("bgui.library", 41); if(BGUIBase == NULL) { Printf((char *) msgTextNoOpen, (ULONG) "bgui.library", 41); Printf("\n"); return FALSE; } screen = LockPubScreen(screenname); indicatorwidth = max(indicatorwidth, 16 * screen->RastPort.Font->tf_XSize); if(screen->Height > 240) { OptionFrame = TRUE; } WO_Window = WindowObject, WINDOW_PubScreen, screen, WINDOW_Title, (char *) msgTextProgramName, WINDOW_CloseGadget, FALSE, WINDOW_MenuStrip, Menus, WINDOW_AutoAspect, TRUE, WINDOW_AutoKeyLabel, TRUE, WINDOW_ScaleWidth, 60, WINDOW_ScaleHeight, 20, WINDOW_HelpFile, HELPFILE, WINDOW_HelpNode, "AHI", WINDOW_IDCMPHook, &IDCMPhook, WINDOW_IDCMPHookBits, IDCMP_RAWKEY, WINDOW_MasterGroup, VGroupObject, NormalOffset, /* TABS */ StartMember, ar[ACTID_TABS] = MxObject, MX_Labels, PageNames, MX_TabsObject, TRUE, GA_ID, ACTID_TABS, EndObject, FixMinHeight, EndMember, StartMember, ar[ACTID_PAGE] = PageObject, NormalSpacing, PAGE_NoBufferRP, TRUE, /* PAGE 1 */ PageMember, HGroupObject, NormalOffset, NormalSpacing, TabAboveFrame, StartMember, vgroup = VGroupObject, NormalSpacing, StartMember, ar[ACTID_UNIT] = CycleObject, CYC_Labels, Units, CYC_Active, state.UnitSelected, CYC_PopActive, PopUpMenus, CYC_Popup, PopUpMenus, GA_ID, ACTID_UNIT, EndObject, FixMinHeight, EndMember, StartMember, ar[ACTID_MODE] = ListviewObject, // LISTV_EntryArray, Modes, // LISTV_Select, state.ModeSelected, PGA_NewLook, TRUE, GA_ID, ACTID_MODE, EndObject, EndMember, StartMember, HGroupObject, ButtonFrame, FRM_Flags, FRF_RECESSED, StartMember, InfoObject, INFO_TextFormat, (char *) msgProperties, INFO_FixTextWidth,TRUE, INFO_MinLines, 6, EndObject, FixMinWidth, EndMember, StartMember, ar[SHOWID_MODE] = InfoObject, INFO_MinLines, 6, EndObject, EndMember, EndObject, FixMinHeight, EndMember, EndObject /* vgroup */, EndMember, StartMember, VGroupObject, NormalSpacing, VarSpace(1), StartMember, VGroupObject, (OptionFrame ? GROUP_HorizOffset : TAG_IGNORE), GRSPACE_NORMAL, (OptionFrame ? GROUP_VertOffset : TAG_IGNORE), GRSPACE_NORMAL, (OptionFrame ? GROUP_Spacing : TAG_IGNORE), GRSPACE_NORMAL, (OptionFrame ? FRM_Type : TAG_IGNORE), FRTYPE_RIDGE, (OptionFrame ? FRM_Flags : TAG_IGNORE), FRF_RECESSED, (OptionFrame ? FRM_Title : TAG_IGNORE), (char *) msgOptions, StartMember, HGroupObject, StartMember, ar[ACTID_FREQ] = SliderObject, LAB_Label, (char *) msgOptFrequency, SLIDER_Min, 0, SLIDER_Max, state.Frequencies -1 , SLIDER_Level, state.FreqSelected, PGA_NewLook, TRUE, GA_ID, ACTID_FREQ, EndObject, EndMember, StartMember, ar[SHOWID_FREQ] = InfoObject, INFO_TextFormat, getFreq(), INFO_VertOffset, 0, EndObject, FixWidth(indicatorwidth), EndMember, EndObject, FixMinHeight, EndMember, StartMember, HGroupObject, StartMember, ar[ACTID_CHANNELS] = SliderObject, LAB_Label, (char *) msgOptChannels, SLIDER_Min, 1, SLIDER_Max, state.Channels, SLIDER_Level, state.ChannelsSelected, PGA_NewLook, TRUE, GA_ID, ACTID_CHANNELS, EndObject, EndMember, StartMember, ar[SHOWID_CHANNELS] = InfoObject, INFO_TextFormat, getChannels(), INFO_VertOffset, 0, EndObject, FixWidth(indicatorwidth), EndMember, EndObject, FixMinHeight, EndMember, StartMember, HGroupObject, StartMember, ar[ACTID_OUTVOL] = SliderObject, LAB_Label, (char *) msgOptVolume, SLIDER_Min, 0, SLIDER_Max, state.OutVols-1 , SLIDER_Level, state.OutVolSelected, PGA_NewLook, TRUE, GA_ID, ACTID_OUTVOL, EndObject, EndMember, StartMember, ar[SHOWID_OUTVOL] = InfoObject, INFO_TextFormat, getOutVol(), INFO_VertOffset, 0, EndObject, FixWidth(indicatorwidth), EndMember, EndObject, FixMinHeight, EndMember, StartMember, HGroupObject, StartMember, ar[ACTID_MONVOL] = SliderObject, LAB_Label, (char *) msgOptMonitor, SLIDER_Min, 0, SLIDER_Max, state.MonVols-1 , SLIDER_Level, state.MonVolSelected, PGA_NewLook, TRUE, GA_ID, ACTID_MONVOL, EndObject, EndMember, StartMember, ar[SHOWID_MONVOL] = InfoObject, INFO_TextFormat, getMonVol(), INFO_VertOffset, 0, EndObject, FixWidth(indicatorwidth), EndMember, EndObject, FixMinHeight, EndMember, StartMember, HGroupObject, StartMember, ar[ACTID_GAIN] = SliderObject, LAB_Label, (char *) msgOptGain, SLIDER_Min, 0, SLIDER_Max, state.Gains-1 , SLIDER_Level, state.GainSelected, PGA_NewLook, TRUE, GA_ID, ACTID_GAIN, EndObject, EndMember, StartMember, ar[SHOWID_GAIN] = InfoObject, INFO_TextFormat, getGain(), INFO_VertOffset, 0, EndObject, FixWidth(indicatorwidth), EndMember, EndObject, FixMinHeight, EndMember, StartMember, HGroupObject, StartMember, ar[ACTID_INPUT] = SliderObject, LAB_Label, (char *) msgOptInput, SLIDER_Min, 0, SLIDER_Max, state.Inputs-1 , SLIDER_Level, state.InputSelected, PGA_NewLook, TRUE, GA_ID, ACTID_INPUT, EndObject, EndMember, StartMember, ar[SHOWID_INPUT] = InfoObject, INFO_TextFormat, getInput(), INFO_VertOffset, 0, EndObject, FixWidth(indicatorwidth), EndMember, EndObject, FixMinHeight, EndMember, StartMember, HGroupObject, StartMember, ar[ACTID_OUTPUT] = SliderObject, LAB_Label, (char *) msgOptOutput, SLIDER_Min, 0, SLIDER_Max, state.Outputs-1 , SLIDER_Level, state.OutputSelected, PGA_NewLook, TRUE, GA_ID, ACTID_OUTPUT, EndObject, EndMember, StartMember, ar[SHOWID_OUTPUT] = InfoObject, INFO_TextFormat, getOutput(), INFO_VertOffset, 0, EndObject, FixWidth(indicatorwidth), EndMember, EndObject, FixMinHeight, EndMember, EndObject /* vgroup "Options" */, FixMinHeight, EndMember, VarSpace(1), EndObject /* vgroup */, EndMember, EndObject, /* (EndMember) page */ /* PAGE 2 */ PageMember, HGroupObject, NormalSpacing, TabAboveFrame, VarSpace(1), StartMember, VGroupObject, NormalSpacing, VarSpace(1), StartMember, VGroupObject, NormalOffset, NormalSpacing, RidgeFrame, FRM_Flags, FRF_RECESSED, FrameTitle((char *) msgGlobalOptions), StartMember, HGroupObject, NormalSpacing, StartMember, VGroupObject, NormalSpacing, StartMember, ar[ACTID_DEBUG] = CycleObject, LAB_Label, (char *) msgGlobOptDebugLevel, LAB_Place, PLACE_LEFT, CYC_Labels, DebugLabels, CYC_Active, globalprefs.ahigp_DebugLevel, CYC_PopActive, PopUpMenus, CYC_Popup, PopUpMenus, GA_ID, ACTID_DEBUG, EndObject, FixMinHeight, EndMember, StartMember, ar[ACTID_ECHO] = CycleObject, LAB_Label, (char *) msgGlobOptEcho, LAB_Place, PLACE_LEFT, CYC_Labels, EchoLabels, CYC_Active, (globalprefs.ahigp_DisableEcho ? 2 : 0) | (globalprefs.ahigp_FastEcho ? 1 : 0), CYC_PopActive, PopUpMenus, CYC_Popup, PopUpMenus, GA_ID, ACTID_ECHO, EndObject, FixMinHeight, EndMember, StartMember, ar[ACTID_SURROUND] = CycleObject, LAB_Label, (char *) msgGlobOptSurround, LAB_Place, PLACE_LEFT, CYC_Labels, SurroundLabels, CYC_Active, globalprefs.ahigp_DisableSurround, GA_ID, ACTID_SURROUND, EndObject, FixMinHeight, EndMember, StartMember, ar[ACTID_CLIPMV] = CycleObject, LAB_Label, (char *) msgGlobOptMasterVol, LAB_Place, PLACE_LEFT, CYC_Labels, ClipMVLabels, CYC_Active, globalprefs.ahigp_ClipMasterVolume, GA_ID, ACTID_CLIPMV, EndObject, FixMinHeight, EndMember, StartMember, ar[ACTID_CPULIMIT] = SliderObject, LAB_Label, (char *) msgGlobOptCPULimit, SLIDER_Min, 0, SLIDER_Max, 100, SLIDER_Level, (globalprefs.ahigp_MaxCPU * 100 + 32768) >> 16, PGA_NewLook, TRUE, GA_ID, ACTID_CPULIMIT, EndObject, EndMember, EndObject /* vgroup */, EndMember, StartMember, VGroupObject, NormalSpacing, VarSpace(1), StartMember, ar[SHOWID_CPULIMIT] = IndicatorObject,\ INDIC_Min, 0, INDIC_Max, 100, INDIC_Level, (globalprefs.ahigp_MaxCPU * 100 + 32768) / 65536, INDIC_Justification, IDJ_LEFT, INDIC_FormatString, "%ld%%", EndObject, FixMinWidth, FixMinHeight, EndMember, EndObject /* vgroup */, EndMember, EndObject /* hgroup */, EndMember, EndObject, FixMinWidth, FixMinHeight, EndMember, VarSpace(1), EndObject /* vgroup */ , FixMinWidth, EndMember, VarSpace(1), EndObject, /* (EndMember) page */ EndObject /* page */, EndMember, /* BUTTONS */ StartMember, HGroupObject, NormalSpacing, NormalVOffset, StartMember, ar[ACTID_SAVE] = ButtonObject, ButtonFrame, LAB_Label, (char *) msgButtonSave, GA_ID, ACTID_SAVE, EndObject, EndMember, StartMember, ar[ACTID_USE] = ButtonObject, ButtonFrame, LAB_Label, (char *) msgButtonUse, GA_ID, ACTID_USE, EndObject, EndMember, StartMember, ar[ACTID_QUIT] = ButtonObject, ButtonFrame, LAB_Label, (char *) msgButtonCancel, GA_ID, ACTID_QUIT, EndObject, EndMember, EndObject, FixMinHeight, EndMember, EndObject, EndObject; if(WO_Window) { AddMap( ar[ACTID_TABS], ar[ACTID_PAGE], pagemap ); DoMethod( ar[ACTID_FREQ], BASE_ADDHOOK, &GadgetHook ); DoMethod( ar[ACTID_CHANNELS], BASE_ADDHOOK, &GadgetHook ); DoMethod( ar[ACTID_OUTVOL], BASE_ADDHOOK, &GadgetHook ); DoMethod( ar[ACTID_MONVOL], BASE_ADDHOOK, &GadgetHook ); DoMethod( ar[ACTID_GAIN], BASE_ADDHOOK, &GadgetHook ); DoMethod( ar[ACTID_INPUT], BASE_ADDHOOK, &GadgetHook ); DoMethod( ar[ACTID_OUTPUT], BASE_ADDHOOK, &GadgetHook ); AddMap( ar[ACTID_CPULIMIT], ar[SHOWID_CPULIMIT], cpumap); window = WindowOpen(WO_Window); } if(screen) { UnlockPubScreen(NULL, screen); } if(window == NULL) { Printf((char *) msgTextNoWindow); Printf("\n"); return FALSE; } openreq = FileReqObject, ASLFR_Window, window, ASLFR_SleepWindow, TRUE, ASLFR_RejectIcons, TRUE, ASLFR_InitialDrawer, "SYS:Prefs/Presets", EndObject; savereq = FileReqObject, ASLFR_Window, window, ASLFR_SleepWindow, TRUE, ASLFR_RejectIcons, TRUE, ASLFR_InitialDrawer, "SYS:Prefs/Presets", ASLFR_DoSaveMode, TRUE, EndObject; if((openreq == NULL) || (savereq == NULL)) { Printf((char *) msgTextNoFileRequester); Printf("\n"); return FALSE; } // Update the checkmark for "Create Icons?" { struct Menu *menu = NULL; struct MenuItem *item; GetAttr( WINDOW_MenuStrip, WO_Window, (ULONG *) &menu); ClearMenuStrip(window); item = FindMenuItem(ACTID_ICONS); if(item) { if(SaveIcons) item->Flags |= CHECKED; else item->Flags &= ~CHECKED; } ResetMenuStrip(window, menu); } GUINewUnit(); return TRUE; }
int main(int argc, char * argv[]) { char *testFileName; FILE *fd; struct SymTab *theTable, *firstCopy, *secondCopy; struct SymEntry *anEntry; struct Attributes *anAttr; char buffer[16]; int val1, val2; if (argc != 2) { fprintf(stderr,"usage: SymTabDriver test-data-file\n"); exit(1); } testFileName = argv[1]; fd = fopen(testFileName,"r"); if (!fd) ErrorExit("Can't open input file.\n"); if (!(theTable = CreateSymTab(5))) ErrorExit("Failed to alloc first table.\n"); /* Read lines consisting of a name string and an integer from std input. If name already present increment value2, if new allocate storage for attribute structure and fill in fields. */ while (fscanf(fd,"%15s %d",buffer,&val1) != EOF) { printf("Find: %15s ",buffer); (FindName(theTable,buffer)) ? fprintf(stdout," Present -") : fprintf(stdout," Not Present -"); if (EnterName(theTable,buffer,&anEntry)) { fprintf(stdout," Enter: Present: %15s\n",GetName(anEntry)); anAttr = (struct Attributes *) GetAttr(anEntry); anAttr->value2++; anAttr->value1 = MAX(((struct Attributes *) GetAttr(anEntry))->value1,val1); } else { fprintf(stdout," Enter: Entered: %15s\n",GetName(anEntry)); anAttr = malloc(sizeof(struct Attributes)); anAttr->value1 = val1; anAttr->value2 = 1; SetAttr(anEntry,anAttr); } } fprintf(stdout,"\nContents of Original Table\n"); DisplayTable(theTable); DisplayStatistics(theTable); if (!(firstCopy = CopyTable(theTable,1))) ErrorExit("Failed to alloc first copy table.\n"); DestroySymTab(theTable); fprintf(stdout,"\nContents of First Copy Table\n"); DisplayTable(firstCopy); DisplayStatistics(firstCopy); if (!(secondCopy = CopyTable(firstCopy,100))) ErrorExit("Failed to alloc first copy table.\n"); DestroySymTab(firstCopy); fprintf(stdout,"\nContents of Second Copy Table\n"); DisplayTable(secondCopy); DisplayStatistics(secondCopy); VerifyCounts(secondCopy); FreeAllAttr(secondCopy); DestroySymTab(secondCopy); return 0; }
void EventLoop(void) { ULONG signal = NULL, rc; WORD code; BOOL running = TRUE; GetAttr( WINDOW_SigMask, WO_Window, &signal ); if(signal) { do { if(Wait(signal | SIGBREAKF_CTRL_C) & SIGBREAKF_CTRL_C ) { running=FALSE; } while (( rc = CA_HandleInput( WO_Window, &code)) != WMHI_LASTMSG) { switch(rc & WMHI_CLASSMASK) { case WMHI_CLOSEWINDOW: running=FALSE; break; case WMHI_GADGETUP: case WMHI_MENUPICK: { if((rc & WMHI_CLASSMASK) == WMHI_MENUPICK) { struct MenuItem *mi; mi = ItemAddress(Menu, rc & WMHI_MENUMASK); if(mi) { rc = (ULONG) GTMENUITEM_USERDATA(mi); } } switch( rc & WMHI_GADGETMASK) { #if 0 case ACTID_OPEN: { if(DoMethod( openreq, FRM_DOREQUEST ) == FRQ_OK) { char *file = NULL; GetAttr( FRQ_Path, openreq, (ULONG *) &file); NewSettings(file); GUINewSettings(); } break; } case ACTID_SAVEAS: { FillUnit(); if(DoMethod( savereq, FRM_DOREQUEST ) == FRQ_OK) { char *file = NULL; GetAttr( FRQ_Path, savereq, (ULONG *) &file); SaveSettings(file, UnitList); if(SaveIcons) { WriteIcon(file); } } break; } #endif case ACTID_ABOUT: Req( (char *) msgButtonOK, (char *) msgTextCopyright, "",(char *) msgTextProgramName, "1996-2004 Martin Blom" ); break; case ACTID_SAVE: FillUnit(); SaveSettings(ENVFILE, UnitList); SaveSettings(ENVARCFILE, UnitList); running=FALSE; break; case ACTID_USE: FillUnit(); SaveSettings(ENVFILE, UnitList); running=FALSE; break; case ACTID_QUIT: running=FALSE; break; case ACTID_DEFAULT: SetAttrs( WO_Window, WA_BusyPointer, TRUE, TAG_DONE); NewSettings(NULL); // This is VERY slow!! SetAttrs( WO_Window, WA_BusyPointer, FALSE, TAG_DONE); GUINewSettings(); break; case ACTID_LASTSAVED: NewSettings(ENVARCFILE); GUINewSettings(); break; case ACTID_RESTORE: NewSettings(args.from); GUINewSettings(); break; case ACTID_ICONS: { struct MenuItem *item; item = FindMenuItem(ACTID_ICONS); if(item) { if(item->Flags & CHECKED) SaveIcons = TRUE; else SaveIcons = FALSE; } break; } #if 0 case ACTID_HELP: { APTR lock = BGUI_LockWindow(Window); if(!BGUI_Help( Window, HELPFILE, "AHI", NULL)) { Req( (char *) msgButtonOK, (char *) msgTextNoFind, HELPFILE); } BGUI_UnlockWindow(lock); break; } case ACTID_GUIDE: { APTR lock = BGUI_LockWindow(Window); if(!BGUI_Help( Window, HELPFILE, NULL, NULL)) { Req( (char *) msgButtonOK, (char *) msgTextNoFind, HELPFILE); } BGUI_UnlockWindow(lock); break; } case ACTID_HELPINDEX: { APTR lock = BGUI_LockWindow(Window); if(!BGUI_Help( Window, HELPFILE, "Concept Index", 0)) { Req( (char *) msgButtonOK, (char *) msgTextNoFind, HELPFILE); } BGUI_UnlockWindow(lock); break; } #endif case ACTID_UNIT: { FillUnit(); NewUnit(code); GUINewUnit(); break; } case ACTID_MODE: { FillUnit(); NewMode(code); GUINewMode(); break; } case ACTID_DEBUG: case ACTID_SURROUND: case ACTID_ECHO: case ACTID_CPULIMIT: case ACTID_CLIPMV: { ULONG debug = AHI_DEBUG_NONE, surround = FALSE, echo = 0, cpu = 90; ULONG clip = FALSE; GetAttr( CHOOSER_Active, Window_Objs[ACTID_DEBUG], &debug); GetAttr( CHOOSER_Active, Window_Objs[ACTID_SURROUND], &surround); GetAttr( CHOOSER_Active, Window_Objs[ACTID_ECHO], &echo); GetAttr( CHOOSER_Active, Window_Objs[ACTID_CLIPMV], &clip); GetAttr( INTEGER_Number, Window_Objs[ACTID_CPULIMIT], &cpu); globalprefs.ahigp_DebugLevel = debug; globalprefs.ahigp_DisableSurround = surround; globalprefs.ahigp_DisableEcho = (echo == 2); globalprefs.ahigp_FastEcho = (echo == 1); globalprefs.ahigp_MaxCPU = (cpu << 16) / 100; globalprefs.ahigp_ClipMasterVolume= clip; break; } } /* switch(GADGETMASK) */ } } /* switch(CLASSMASK) */ } /* HandleInput */ } while(running); } }
void SVGStyleElement::GetXmlspace(nsAString & aXmlspace) { GetAttr(kNameSpaceID_XML, nsGkAtoms::space, aXmlspace); }
void SVGStyleElement::GetMedia(nsAString & aMedia) { GetAttr(kNameSpaceID_None, nsGkAtoms::media, aMedia); }
//void SettingsXML::Save(const wchar_t *regName, const wchar_t *value) //{ // if (!value) value = L""; // сюда мог придти и NULL // // Save(regName, (LPCBYTE)value, REG_SZ, (_tcslen(value)+1)*sizeof(wchar_t)); //} void SettingsXML::Save(const wchar_t *regName, LPCBYTE value, DWORD nType, DWORD nSize) { HRESULT hr = S_OK; IXMLDOMNamedNodeMap* pAttrs = NULL; IXMLDOMNodeList* pList = NULL; IXMLDOMAttribute *pIXMLDOMAttribute = NULL; IXMLDOMNode *pNode = NULL; IXMLDOMNode* pChild = NULL; IXMLDOMNode *pNodeRmv = NULL; BSTR bsValue = NULL; BSTR bsType = NULL; bool bNeedSetType = false; // nType: // REG_DWORD: сохранение числа в 16-ричном или 10-чном формате, в зависимости от того, что сейчас указано в xml ("dword"/"ulong"/"long") // REG_BINARY: строго в hex (FF,FF,...) // REG_SZ: ASCIIZ строка, можно проконтролировать, чтобы nSize/2 не был меньше длины строки // REG_MULTI_SZ: ASCIIZZ. При формировании <list...> нужно убедиться, что мы не вылезли за пределы nSize pChild = FindItem(mp_Key, L"value", regName, true); // создать, если его еще нету if (!pChild) goto wrap; hr = pChild->get_attributes(&pAttrs); if (FAILED(hr) || !pAttrs) goto wrap; bsType = GetAttr(pChild, pAttrs, L"type"); switch(nType) { case REG_DWORD: { wchar_t szValue[32]; if (bsType && (bsType[0] == L'u' || bsType[0] == L'U')) { _wsprintf(szValue, SKIPLEN(countof(szValue)) L"%u", *(LPDWORD)value); } else if (bsType && (bsType[0] == L'l' || bsType[0] == L'L')) { _wsprintf(szValue, SKIPLEN(countof(szValue)) L"%i", *(int*)value); } else { _wsprintf(szValue, SKIPLEN(countof(szValue)) L"%08x", *(LPDWORD)value); if (bsType) ::SysFreeString(bsType); // нужно добавить/установить тип bsType = ::SysAllocString(L"dword"); bNeedSetType = true; } bsValue = ::SysAllocString(szValue); } break; case REG_BINARY: { if (nSize == 1 && bsType && (bsType[0] == L'u' || bsType[0] == L'U')) { wchar_t szValue[4]; BYTE bt = *value; _wsprintf(szValue, SKIPLEN(countof(szValue)) L"%u", (DWORD)bt); bsValue = ::SysAllocString(szValue); } else if (nSize == 1 && bsType && (bsType[0] == L'l' || bsType[0] == L'L')) { wchar_t szValue[4]; char bt = *value; _wsprintf(szValue, SKIPLEN(countof(szValue)) L"%i", (int)bt); bsValue = ::SysAllocString(szValue); } else { DWORD nLen = nSize*2 + (nSize-1); // по 2 символа на байт + ',' между ними bsValue = ::SysAllocStringLen(NULL, nLen); nLen ++; // Чтобы далее не добавлять WCHAR на '\0' wchar_t* psz = (wchar_t*)bsValue; LPCBYTE ptr = value; while(nSize) { _wsprintf(psz, SKIPLEN(nLen-(psz-bsValue)) L"%02x", (DWORD)*ptr); ptr++; nSize--; psz+=2; if (nSize) *(psz++) = L','; } if (bsType && lstrcmp(bsType, L"hex")) { // Допустим только "hex" ::SysFreeString(bsType); bsType = NULL; } if (!bsType) { // нужно добавить/установить тип bsType = ::SysAllocString(L"hex"); bNeedSetType = true; } } } break; case REG_SZ: { wchar_t* psz = (wchar_t*)value; bsValue = ::SysAllocString(psz); if (bsType && lstrcmp(bsType, L"string")) { // Допустим только "string" ::SysFreeString(bsType); bsType = NULL; } if (!bsType) { // нужно добавить/установить тип bsType = ::SysAllocString(L"string"); bNeedSetType = true; } } break; case REG_MULTI_SZ: { if (bsType && lstrcmp(bsType, L"multi")) { // Допустим только "multi" ::SysFreeString(bsType); bsType = NULL; } if (!bsType) { // нужно добавить/установить тип bsType = ::SysAllocString(L"multi"); bNeedSetType = true; } } break; default: goto wrap; // не поддерживается } if (bNeedSetType) { _ASSERTE(bsType!=NULL); SetAttr(pChild, pAttrs, L"type", bsType); ::SysFreeString(bsType); bsType = NULL; } // Теперь собственно значение if (nType != REG_MULTI_SZ) { _ASSERTE(bsValue != NULL); SetAttr(pChild, pAttrs, L"data", bsValue); ::SysFreeString(bsValue); bsValue = NULL; } else // Тут нужно формировать список элементов <list> { VARIANT_BOOL bHasChild = VARIANT_FALSE; DOMNodeType nodeType = NODE_INVALID; // Если ранее был параметр "data" - удалить его из списка атрибутов hr = pAttrs->getNamedItem(L"data", &pNode); if (SUCCEEDED(hr) && pNode) { hr = pChild->removeChild(pNode, &pNodeRmv); pNode->Release(); pNode = NULL; if (pNodeRmv) { pNodeRmv->Release(); pNodeRmv = NULL; } } //TODO: может оставить перевод строки? // Сначала почистим #ifdef _DEBUG hr = pChild->get_nodeType(&nodeType); #endif hr = pChild->hasChildNodes(&bHasChild); if (bHasChild) { while((hr = pChild->get_firstChild(&pNode)) == S_OK && pNode) { hr = pNode->get_nodeType(&nodeType); #ifdef _DEBUG BSTR bsDebug = NULL; pNode->get_text(&bsDebug); if (bsDebug) ::SysFreeString(bsDebug); bsDebug = NULL; #endif hr = pChild->removeChild(pNode, &pNodeRmv); if (pNodeRmv) { pNodeRmv->Release(); pNodeRmv = NULL; } pNode->Release(); pNode = NULL; } } // Теперь - добавляем список wchar_t* psz = (wchar_t*)value; BSTR bsNodeType = ::SysAllocString(L"line"); VARIANT vtType; vtType.vt = VT_I4; vtType.lVal = NODE_ELEMENT; long nAllLen = nSize/2; // длина в wchar_t long nLen = 0; while(psz && *psz && nAllLen > 0) { hr = mp_File->createNode(vtType, bsNodeType, L"", &pNode); if (FAILED(hr) || !pNode) break; if (!SetAttr(pNode, L"data", psz)) break; hr = pChild->appendChild(pNode, &pNodeRmv); pNode->Release(); pNode = NULL; if (pNodeRmv) { pNodeRmv->Release(); pNodeRmv = NULL; } if (FAILED(hr)) break; nLen = _tcslen(psz)+1; psz += nLen; nAllLen -= nLen; } _ASSERTE(nAllLen <= 1); } mb_Modified = true; wrap: if (pIXMLDOMAttribute) { pIXMLDOMAttribute->Release(); pIXMLDOMAttribute = NULL; } if (pNode) { pNode->Release(); pNode = NULL; } if (pNodeRmv) { pNodeRmv->Release(); pNodeRmv = NULL; } if (pChild) { pChild->Release(); pChild = NULL; } if (pAttrs) { pAttrs->Release(); pAttrs = NULL; } if (bsValue) { ::SysFreeString(bsValue); bsValue = NULL; } if (bsType) { ::SysFreeString(bsType); bsType = NULL; } }
IXMLDOMNode* SettingsXML::FindItem(IXMLDOMNode* apFrom, const wchar_t* asType, const wchar_t* asName, bool abAllowCreate) { HRESULT hr = S_OK; IXMLDOMNodeList* pList = NULL; IXMLDOMNode* pChild = NULL; IXMLDOMNamedNodeMap* pAttrs = NULL; IXMLDOMAttribute *pIXMLDOMAttribute = NULL; IXMLDOMNode *pIXMLDOMNode = NULL; IXMLDOMNode *pName = NULL; BSTR bsText = NULL; BOOL lbEmpty = TRUE; // Получить все дочерние элементы нужного типа if (apFrom == NULL) { hr = S_FALSE; } else { bsText = ::SysAllocString(asType); hr = apFrom->selectNodes(bsText, &pList); ::SysFreeString(bsText); bsText = NULL; } if (SUCCEEDED(hr) && pList) { hr = pList->reset(); while((hr = pList->nextNode(&pIXMLDOMNode)) == S_OK && pIXMLDOMNode) { lbEmpty = FALSE; hr = pIXMLDOMNode->get_attributes(&pAttrs); if (SUCCEEDED(hr) && pAttrs) { bsText = GetAttr(pIXMLDOMNode, pAttrs, L"name"); if (bsText) { if (lstrcmpi(bsText, asName) == 0) { ::SysFreeString(bsText); bsText = NULL; pChild = pIXMLDOMNode; pIXMLDOMNode = NULL; break; } ::SysFreeString(bsText); bsText = NULL; } } pIXMLDOMNode->Release(); pIXMLDOMNode = NULL; } pList->Release(); //pList = NULL; -- для отладки } if (lbEmpty && abAllowCreate && (asType[0] == L'k')) { bsText = ::SysAllocString(L"value"); hr = apFrom->selectNodes(bsText, &pList); ::SysFreeString(bsText); bsText = NULL; if (SUCCEEDED(hr) && pList) { hr = pList->reset(); if ((hr = pList->nextNode(&pIXMLDOMNode)) == S_OK && pIXMLDOMNode) { lbEmpty = FALSE; pIXMLDOMNode->Release(); pIXMLDOMNode = NULL; } pList->Release(); //pList = NULL; -- для отладки } } if (!pChild && abAllowCreate) { VARIANT vtType; vtType.vt = VT_I4; vtType.lVal = NODE_ELEMENT; bsText = ::SysAllocString(asType); hr = mp_File->createNode(vtType, bsText, L"", &pChild); ::SysFreeString(bsText); bsText = NULL; if (SUCCEEDED(hr) && pChild) { if (SetAttr(pChild, L"name", asName)) { if (asType[0] == L'k') { AppendNewLine(pChild); mb_KeyEmpty = true; } if (asType[0] == L'k') { //if (mb_KeyEmpty) //AppendIndent(apFrom, lbEmpty ? (mi_Level-1) : mi_Level); AppendIndent(apFrom, (mi_Level-1)); } else if (mb_KeyEmpty) { AppendIndent(apFrom, !lbEmpty ? (mi_Level-1) : mi_Level); } else { AppendIndent(apFrom, 1); } hr = apFrom->appendChild(pChild, &pIXMLDOMNode); pChild->Release(); pChild = NULL; if (FAILED(hr)) { pAttrs->Release(); pAttrs = NULL; } else { pChild = pIXMLDOMNode; pIXMLDOMNode = NULL; } AppendNewLine(apFrom); AppendIndent(apFrom, mi_Level-1); if ((asType[0] != L'k') && mb_KeyEmpty) mb_KeyEmpty = false; } else { pChild->Release(); pChild = NULL; } } } return pChild; }
bool SettingsXML::Load(const wchar_t *regName, LPBYTE value, DWORD nSize) { bool lbRc = false; HRESULT hr = S_OK; IXMLDOMNode* pChild = NULL; IXMLDOMNamedNodeMap* pAttrs = NULL; IXMLDOMAttribute *pIXMLDOMAttribute = NULL; IXMLDOMNode *pNode = NULL; BSTR bsType = NULL; BSTR bsData = NULL; if (!value || !nSize) return false; if (mp_Key) pChild = FindItem(mp_Key, L"value", regName, false); if (!pChild) return false; hr = pChild->get_attributes(&pAttrs); if (SUCCEEDED(hr) && pAttrs) { bsType = GetAttr(pChild, pAttrs, L"type"); } if (SUCCEEDED(hr) && bsType) { bsData = GetAttr(pChild, pAttrs, L"data"); } if (SUCCEEDED(hr) && bsData) { if (!lstrcmpi(bsType, L"string")) { #ifdef _DEBUG DWORD nLen = _tcslen(bsData) + 1; #endif DWORD nMaxLen = nSize / 2; lstrcpyn((wchar_t*)value, bsData, nMaxLen); lbRc = true; } else if (!lstrcmpi(bsType, L"ulong")) { wchar_t* pszEnd = NULL; DWORD lVal = wcstoul(bsData, &pszEnd, 10); if (nSize > 4) nSize = 4; if (pszEnd && pszEnd != bsData) { memmove(value, &lVal, nSize); lbRc = true; } } else if (!lstrcmpi(bsType, L"long")) { wchar_t* pszEnd = NULL; int lVal = wcstol(bsData, &pszEnd, 10); if (nSize > 4) nSize = 4; if (pszEnd && pszEnd != bsData) { memmove(value, &lVal, nSize); lbRc = true; } } else if (!lstrcmpi(bsType, L"dword")) { wchar_t* pszEnd = NULL; DWORD lVal = wcstoul(bsData, &pszEnd, 16); if (nSize > 4) nSize = 4; if (pszEnd && pszEnd != bsData) { memmove(value, &lVal, nSize); lbRc = true; } } else if (!lstrcmpi(bsType, L"hex")) { wchar_t* pszCur = bsData; wchar_t* pszEnd = NULL; LPBYTE pCur = value; wchar_t cHex; DWORD lVal = 0; lbRc = true; while (*pszCur && nSize) { lVal = 0; cHex = *(pszCur++); if (cHex >= L'0' && cHex <= L'9') { lVal = cHex - L'0'; } else if (cHex >= L'a' && cHex <= L'f') { lVal = cHex - L'a' + 10; } else if (cHex >= L'A' && cHex <= L'F') { lVal = cHex - L'A' + 10; } else { lbRc = false; break; } cHex = *(pszCur++); if (cHex && cHex != L',') { lVal = lVal << 4; if (cHex >= L'0' && cHex <= L'9') { lVal |= cHex - L'0'; } else if (cHex >= L'a' && cHex <= L'f') { lVal |= cHex - L'a' + 10; } else if (cHex >= L'A' && cHex <= L'F') { lVal |= cHex - L'A' + 10; } else { lbRc = false; break; } cHex = *(pszCur++); } *pCur = (BYTE)lVal; pCur++; nSize--; if (cHex != L',') { break; } } while(nSize--) // очистить хвост *(pCur++) = 0; } } // Остальные типы (строки) - не интересуют if (bsType) { ::SysFreeString(bsType); bsType = NULL; } if (bsData) { ::SysFreeString(bsData); bsData = NULL; } if (pChild) { pChild->Release(); pChild = NULL; } if (pAttrs) { pAttrs->Release(); pAttrs = NULL; } return lbRc; }
// эта функция, если значения нет (или тип некорректный) *value НЕ трогает bool SettingsXML::Load(const wchar_t *regName, wchar_t **value) { bool lbRc = false; HRESULT hr = S_OK; IXMLDOMNode* pChild = NULL; IXMLDOMNamedNodeMap* pAttrs = NULL; IXMLDOMAttribute *pIXMLDOMAttribute = NULL; IXMLDOMNode *pNode = NULL; IXMLDOMNodeList* pList = NULL; BSTR bsType = NULL; BSTR bsData = NULL; size_t nLen = 0; //if (*value) {free(*value); *value = NULL;} if (mp_Key) pChild = FindItem(mp_Key, L"value", regName, false); if (!pChild) return false; hr = pChild->get_attributes(&pAttrs); if (SUCCEEDED(hr) && pAttrs) { bsType = GetAttr(pChild, pAttrs, L"type"); } if (SUCCEEDED(hr) && bsType) { if (!lstrcmpi(bsType, L"multi")) { // Тут значения хранятся так: //<value name="CmdLineHistory" type="multi"> // <line data="C:\Far\Far.exe"/> // <line data="cmd"/> //</value> wchar_t *pszData = NULL, *pszCur = NULL; size_t nMaxLen = 0, nCurLen = 0; long nCount = 0; if (pAttrs) { pAttrs->Release(); pAttrs = NULL; } // Получить все дочерние элементы нужного типа bsData = ::SysAllocString(L"line"); hr = pChild->selectNodes(bsData, &pList); ::SysFreeString(bsData); bsData = NULL; if (SUCCEEDED(hr) && pList) { hr = pList->get_length(&nCount); if (SUCCEEDED(hr) && nCount > 0) { HEAPVAL; nMaxLen = ((MAX_PATH+1) * nCount) + 1; pszData = (wchar_t*)malloc(nMaxLen * sizeof(wchar_t)); pszCur = pszData; pszCur[0] = 0; pszCur[1] = 0; nCurLen = 2; // сразу посчитать DoubleZero HEAPVAL; } } if (SUCCEEDED(hr) && pList) { hr = pList->reset(); while((hr = pList->nextNode(&pNode)) == S_OK && pNode) { bsData = GetAttr(pNode, L"data"); pNode->Release(); pNode = NULL; if (SUCCEEDED(hr) && bsData) { nLen = _tcslen(bsData) + 1; if ((nCurLen + nLen) > nMaxLen) { // Нужно пересоздать! nMaxLen = nCurLen + nLen + MAX_PATH + 1; wchar_t *psz = (wchar_t*)malloc(nMaxLen * sizeof(wchar_t)); _ASSERTE(psz); if (!psz) break; // Не удалось выделить память! wmemmove(psz, pszData, nCurLen); pszCur = psz + (pszCur - pszData); HEAPVAL; free(pszData); pszData = psz; HEAPVAL; } lstrcpy(pszCur, bsData); pszCur += nLen; // указатель - на место для следующей строки nCurLen += nLen; *pszCur = 0; // ASCIIZZ HEAPVAL; ::SysFreeString(bsData); bsData = NULL; } } pList->Release(); pList = NULL; } // значит что-то прочитать удалось if (pszData) { if (*value) {free(*value); *value = NULL;} *value = pszData; lbRc = true; } } else if (!lstrcmpi(bsType, L"string")) { bsData = GetAttr(pChild, pAttrs, L"data"); if (SUCCEEDED(hr) && bsData) { nLen = _tcslen(bsData); if (*value) {free(*value); *value = NULL;} *value = (wchar_t*)malloc((nLen+2)*sizeof(wchar_t)); lstrcpy(*value, bsData); (*value)[nLen] = 0; // уже должен быть после lstrcpy (*value)[nLen+1] = 0; // ASCIIZZ lbRc = true; } } // Все остальные типы - не интересуют. Нам нужны только строки } if (bsType) { ::SysFreeString(bsType); bsType = NULL; } if (bsData) { ::SysFreeString(bsData); bsData = NULL; } if (pChild) { pChild->Release(); pChild = NULL; } if (pAttrs) { pAttrs->Release(); pAttrs = NULL; } //if (!lbRc) //{ // _ASSERTE(*value == NULL); // *value = (wchar_t*)malloc(sizeof(wchar_t)*2); // (*value)[0] = 0; (*value)[1] = 0; // На случай REG_MULTI_SZ //} return lbRc; }
void main(int argc, char *argv[]) { struct gtbApplication *appl=NULL; struct Window *Wnd; struct Gadget *GList=NULL; Object *prev; unless(appl=gtbNewApplication(TAG_DONE)) Leave("Can't create application"); unless(Scrn=NewObject(appl->ga_ScrClass,NULL, SCRN_LikeWorkbench,TRUE, SCRN_PubName,APPPUBNAME, SCRN_Private,FALSE, SCRN_Title,APPPUBNAME, TAG_DONE)) Leave("Can't create screen"); unless(Cdity=NewObject(appl->ga_CxClass,NULL, COMM_Name,APPNAME, COMM_Title,APPTITLE, COMM_Description,APPDESCRIPTION, COMM_Unique,TRUE, COMM_Notify,TRUE, COMM_ShowHide,TRUE, COMM_Handler,(ULONG)CdityHandler, COMM_AddHotKeyStr,"control t",COMM_AddHotKeyID,1, TAG_DONE)) Leave("Can't create commodity"); unless(CtrlC=NewObject(appl->ga_MsgClass,NULL, MESG_SigBit,SIGBREAKF_CTRL_C, MESG_Handler,(ULONG)CtrlCHandler, TAG_DONE)) Leave("Can't create message handler"); unless(ARexx=NewObject(appl->ga_ARexxClass,NULL, REXX_Name,APPPUBNAME, REXX_Extension,APPEXTENSION, REXX_CommandTable,commands, REXX_Handler,(ULONG)ARexxHandler, TAG_DONE)) Leave("Can't create arexx"); unless(AmigaGuide=NewObject(appl->ga_AGClass,NULL, AGUI_Name,APPGUIDE, AGUI_ScreenObject,Scrn, AGUI_ARexxObject,ARexx, AGUI_Activate,TRUE, AGUI_BaseName,APPNAME, TAG_DONE)) Leave("Can't create amigaguide"); unless(MainWnd=NewObject(appl->ga_WndClass,NULL,WIND_CenterX,600,WIND_CenterY,20,WIND_Width,200,WIND_Height,200, WIND_DragBar,TRUE, WIND_DepthGadget,TRUE, WIND_SizeGadget,TRUE, WIND_CloseGadget,TRUE, WIND_Title,APPTITLE, WIND_ScreenObject,Scrn, WIND_VertScroll,TRUE, WIND_VertTotal,10, WIND_HorizScroll,TRUE, WIND_HorizTotal,10, WIND_HorizVisible,5, WIND_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_GADGETUP, WIND_Handler,(ULONG)WndHandler, WIND_Activate,TRUE, WIND_MaxWidth,-1, WIND_MaxHeight,-1, TAG_DONE)) Leave("Can't create window"); GetAttr(WIND_Window,MainWnd,(ULONG *)&Wnd); unless(prev=(Object *)CreateContext(&GList)) Leave("Can't create context"); unless(prev=gtbCreateGadget(BUTTON_KIND,NULL,NULL, GA_Previous,prev, GA_Left,Wnd->BorderLeft, GA_Top,Wnd->BorderTop, GA_Width,100, GA_Height,20, GA_Text,"Ble", GT_ScreenObj,Scrn, GT_Handler,(ULONG)Gad1Handler, TAG_DONE)) Leave("Can't create gadget 1"); unless(prev=gtbCreateGadget(STRING_KIND,NULL,NULL, GA_Previous,prev, GA_Left,Wnd->BorderLeft, GA_Top,Wnd->BorderTop+30, GA_Width,100, GA_Height,20, GA_Text,"Ble2", GT_ScreenObj,Scrn, TAG_DONE)) Leave("Can't create gadget 2"); unless(prev=gtbCreateGadget(BOOPSI_KIND,NULL,FRBUTTONCLASS, GA_Previous,prev, GA_Left,Wnd->BorderLeft, GA_Top,Wnd->BorderTop+60, GA_Width,100, GA_Height,20, GA_Text,"Ble3", ICA_TARGET,ICTARGET_IDCMP, TAG_DONE)) Leave("Can't create gadget 3"); DoMethod(MainWnd,OM_ADDMEMBER,GList); RefreshGList(GList,Wnd,NULL,-1); GT_RefreshWindow(Wnd,NULL); gtbExecuteRexx(ARexx,argv[1]); while(gtbHandleObject(MainWnd,Cdity,CtrlC,ARexx,AmigaGuide,TAG_DONE)); RemoveGList(Wnd,GList,-1); gtbFreeGadgets(GList); end: if(AmigaGuide) DisposeObject(AmigaGuide); if(ARexx) DisposeObject(ARexx); if(MainWnd) DisposeObject(MainWnd); if(CtrlC) DisposeObject(CtrlC); if(Cdity) DisposeObject(Cdity); if(Scrn) DisposeObject(Scrn); if(appl) gtbDisposeApplication(appl); }
void ami_history_open(struct browser_window *bw, struct history *history) { int width, height; struct IBox *bbox; assert(history); history_current = history; if(!hwindow) { hwindow = AllocVec(sizeof(struct history_window),MEMF_CLEAR | MEMF_PRIVATE); ami_init_layers(&hwindow->gg, 0, 0); hwindow->bw = bw; history_size(history, &width, &height); hwindow->scrollerhook.h_Entry = (void *)ami_history_scroller_hook; hwindow->scrollerhook.h_Data = hwindow; hwindow->objects[OID_MAIN] = WindowObject, WA_ScreenTitle,nsscreentitle, WA_Title,messages_get("History"), WA_Activate, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_SizeGadget, TRUE, WA_CustomScreen,scrn, WA_InnerWidth,width, WA_InnerHeight,height + 10, WINDOW_SharedPort,sport, WINDOW_UserData,hwindow, WINDOW_IconifyGadget, FALSE, WINDOW_GadgetHelp, TRUE, WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_HorizProp,1, WINDOW_VertProp,1, WINDOW_IDCMPHook,&hwindow->scrollerhook, WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE, // WA_ReportMouse,TRUE, WA_IDCMP,IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE, // | IDCMP_MOUSEMOVE, WINDOW_ParentGroup, hwindow->objects[GID_MAIN] = VGroupObject, LAYOUT_AddChild, hwindow->objects[GID_BROWSER] = SpaceObject, GA_ID,GID_BROWSER, // SPACE_MinWidth,width, // SPACE_MinHeight,height, SpaceEnd, EndGroup, EndWindow; hwindow->win = (struct Window *)RA_OpenWindow(hwindow->objects[OID_MAIN]); // hwindow->bw->window = hwindow; hwindow->node = AddObject(window_list,AMINS_HISTORYWINDOW); hwindow->node->objstruct = hwindow; GetAttr(WINDOW_HorizObject,hwindow->objects[OID_MAIN],(ULONG *)&hwindow->objects[OID_HSCROLL]); GetAttr(WINDOW_VertObject,hwindow->objects[OID_MAIN],(ULONG *)&hwindow->objects[OID_VSCROLL]); RefreshSetGadgetAttrs((APTR)hwindow->objects[OID_VSCROLL],hwindow->win,NULL, GA_ID,OID_VSCROLL, SCROLLER_Top,0, ICA_TARGET,ICTARGET_IDCMP, TAG_DONE); RefreshSetGadgetAttrs((APTR)hwindow->objects[OID_HSCROLL],hwindow->win,NULL, GA_ID,OID_HSCROLL, SCROLLER_Top,0, ICA_TARGET,ICTARGET_IDCMP, TAG_DONE); } hwindow->bw = bw; bw->window->hw = hwindow; ami_history_redraw(hwindow); }
void SVGStyleElement::GetTitle(nsAString & aTitle) { GetAttr(kNameSpaceID_None, nsGkAtoms::title, aTitle); }
ULONG XGET(APTR obj, ULONG attr) { ULONG val; GetAttr(attr, obj, &val); return val; }
void GISSetFieldAttributeMsgData::Validate() throw(GException) { /* *05 = Field number already used *06 = Invalid display number or display number does not exist *07 = Invalid screen number or screen number does not exist *08 = Invalid segment number or segment number does not exist *09 = InvalidFieldNumberOrFieldNumberDoesNotExist *12 = Invalid Attribute */ LOG_LEVEL4("Validate()"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TODO: DisplayManager Constrain - If improvement is done on Specs, this should be removed. if ( GetDisplay() != 1) { throw GIS_EXCEPTION(GISCommandStatusEnum::eInvalidDisplayNumberOrDisplayNumberDoesNotExist); } if ( GetScreen() == 0) { throw GIS_EXCEPTION(GISCommandStatusEnum::eInvalidScreenNumberOrScreenNumberDoesNotExist); } if( GetSegment() == 0 ) { throw GIS_EXCEPTION(GISCommandStatusEnum::eInvalidSegmentNumberOrSegmentNumberDoesNotExist); } if( GetField() == 0 ) { throw GIS_EXCEPTION(GISCommandStatusEnum::eInvalidFieldNumberOrFieldNumberDoesNotExist); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QSharedPointer<GISModel> pModel = GISModelSingleton::GetInstance()->GetModel(); { QMutexLocker mtxScope(pModel->GetMutex()); GDisplay* poDisplay = pModel->GetDisplay(GetDisplay()); if( poDisplay == NULL ) { throw GIS_EXCEPTION(GISCommandStatusEnum::eInvalidDisplayNumberOrDisplayNumberDoesNotExist); } GScreen* poScreen = poDisplay->GetScreen(GetScreen()); if( poScreen == NULL ) { throw GIS_EXCEPTION(GISCommandStatusEnum::eInvalidScreenNumberOrScreenNumberDoesNotExist); } GSegment* poSegment = poScreen->GetSegment(GetSegment()); if( poSegment == NULL ) { throw GIS_EXCEPTION(GISCommandStatusEnum::eInvalidSegmentNumberOrSegmentNumberDoesNotExist); } GTextField* poField = poSegment->GetField(GetField()); if( poField == NULL ) { //NGP 121, GPT 14/10/09 throw GIS_EXCEPTION(GISCommandStatusEnum::eInvalidFieldNumberOrFieldNumberDoesNotExist); } int iAtt = GetAttr(); if( !((iAtt > GAttributeEnum::eBeforeFirstAttrib) && (iAtt < GAttributeEnum::eAfterLastAttrib)) ) { throw GIS_EXCEPTION(GISCommandStatusEnum::eInvalidAttribute); } } }
void HTMLTrackElement::LoadResource() { // Find our 'src' url nsAutoString src; if (!GetAttr(kNameSpaceID_None, nsGkAtoms::src, src)) { return; } nsCOMPtr<nsIURI> uri; nsresult rv = NewURIFromString(src, getter_AddRefs(uri)); NS_ENSURE_TRUE_VOID(NS_SUCCEEDED(rv)); LOG(PR_LOG_ALWAYS, ("%p Trying to load from src=%s", this, NS_ConvertUTF16toUTF8(src).get())); if (mChannel) { mChannel->Cancel(NS_BINDING_ABORTED); mChannel = nullptr; } rv = nsContentUtils::GetSecurityManager()-> CheckLoadURIWithPrincipal(NodePrincipal(), uri, nsIScriptSecurityManager::STANDARD); NS_ENSURE_TRUE_VOID(NS_SUCCEEDED(rv)); int16_t shouldLoad = nsIContentPolicy::ACCEPT; rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_MEDIA, uri, NodePrincipal(), static_cast<Element*>(this), NS_LITERAL_CSTRING("text/vtt"), // mime type nullptr, // extra &shouldLoad, nsContentUtils::GetContentPolicy(), nsContentUtils::GetSecurityManager()); NS_ENSURE_TRUE_VOID(NS_SUCCEEDED(rv)); if (NS_CP_REJECTED(shouldLoad)) { return; } CreateTextTrack(); // Check for a Content Security Policy to pass down to the channel // created to load the media content. nsCOMPtr<nsIChannelPolicy> channelPolicy; nsCOMPtr<nsIContentSecurityPolicy> csp; rv = NodePrincipal()->GetCsp(getter_AddRefs(csp)); NS_ENSURE_TRUE_VOID(NS_SUCCEEDED(rv)); if (csp) { channelPolicy = do_CreateInstance("@mozilla.org/nschannelpolicy;1"); if (!channelPolicy) { return; } channelPolicy->SetContentSecurityPolicy(csp); channelPolicy->SetLoadType(nsIContentPolicy::TYPE_MEDIA); } nsCOMPtr<nsIChannel> channel; nsCOMPtr<nsILoadGroup> loadGroup = OwnerDoc()->GetDocumentLoadGroup(); rv = NS_NewChannel(getter_AddRefs(channel), uri, nullptr, loadGroup, nullptr, nsIRequest::LOAD_NORMAL, channelPolicy); NS_ENSURE_TRUE_VOID(NS_SUCCEEDED(rv)); mListener = new WebVTTListener(this); rv = mListener->LoadResource(); NS_ENSURE_TRUE_VOID(NS_SUCCEEDED(rv)); channel->SetNotificationCallbacks(mListener); LOG(PR_LOG_DEBUG, ("opening webvtt channel")); rv = channel->AsyncOpen(mListener, nullptr); NS_ENSURE_TRUE_VOID(NS_SUCCEEDED(rv)); mChannel = channel; }
/* * SMILANIM specifies the following rules for animation function values: * * (1) if values is set, it overrides everything * (2) for from/to/by animation at least to or by must be specified, from on its * own (or nothing) is an error--which we will ignore * (3) if both by and to are specified only to will be used, by will be ignored * (4) if by is specified without from (by animation), forces additive behaviour * (5) if to is specified without from (to animation), special care needs to be * taken when compositing animation as such animations are composited last. * * This helper method applies these rules to fill in the values list and to set * some internal state. */ nsresult nsSMILAnimationFunction::GetValues(const nsISMILAttr& aSMILAttr, nsSMILValueArray& aResult) { if (!mAnimationElement) return NS_ERROR_FAILURE; mValueNeedsReparsingEverySample = PR_FALSE; nsSMILValueArray result; // If "values" is set, use it if (HasAttr(nsGkAtoms::values)) { nsAutoString attValue; GetAttr(nsGkAtoms::values, attValue); PRBool preventCachingOfSandwich; nsresult rv = nsSMILParserUtils::ParseValues(attValue, mAnimationElement, aSMILAttr, result, preventCachingOfSandwich); if (NS_FAILED(rv)) return rv; if (preventCachingOfSandwich) { mValueNeedsReparsingEverySample = PR_TRUE; } // Else try to/from/by } else { PRBool preventCachingOfSandwich = PR_FALSE; PRBool parseOk = PR_TRUE; nsSMILValue to, from, by; parseOk &= ParseAttr(nsGkAtoms::to, aSMILAttr, to, preventCachingOfSandwich); parseOk &= ParseAttr(nsGkAtoms::from, aSMILAttr, from, preventCachingOfSandwich); parseOk &= ParseAttr(nsGkAtoms::by, aSMILAttr, by, preventCachingOfSandwich); if (preventCachingOfSandwich) { mValueNeedsReparsingEverySample = PR_TRUE; } if (!parseOk) return NS_ERROR_FAILURE; result.SetCapacity(2); if (!to.IsNull()) { if (!from.IsNull()) { result.AppendElement(from); result.AppendElement(to); } else { result.AppendElement(to); } } else if (!by.IsNull()) { nsSMILValue effectiveFrom(by.mType); if (!from.IsNull()) effectiveFrom = from; // Set values to 'from; from + by' result.AppendElement(effectiveFrom); nsSMILValue effectiveTo(effectiveFrom); if (!effectiveTo.IsNull() && NS_SUCCEEDED(effectiveTo.Add(by))) { result.AppendElement(effectiveTo); } else { // Using by-animation with non-additive type or bad base-value return NS_ERROR_FAILURE; } } else { // No values, no to, no by -- call it a day return NS_ERROR_FAILURE; } } result.SwapElements(aResult); return NS_OK; }
static void HOOKCALL IDCMPhookFunc( REG( a0, struct Hook *hook ), REG( a2, Object *obj ), REG( a1, struct IntuiMessage *msg ) ) { switch(msg->Code) { case 0x42: { /* ** TAB - Next page ** SHIFT + TAB - Prev page */ ULONG pos = 0; struct TagItem tags[] = { {CLICKTAB_Current, 0}, {TAG_END, NULL} }; GetAttr( CLICKTAB_Current, Window_Objs[ACTID_TABS], &pos ); if ( msg->Qualifier & ( IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT )) pos--; else pos++; pos %= 2; tags[0].ti_Data = pos; MySetGadgetAttrs(Window_Objs[ACTID_TABS], CLICKTAB_Current, pos, TAG_END ); MySetGadgetAttrs(Window_Objs[ACTID_PAGE], PAGE_Current, pos, TAG_END ); RethinkLayout((struct Gadget *) Window_Objs[LAYOUT_PAGE], Window, NULL, TRUE); break; } case 0x4C: { /* ** UP - Move entry up. ** SHIFT + UP - Move page up. ** CTRL + UP - Move to the top. **/ ULONG mode = 0; if(msg->Qualifier & ( IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT )) MySetGadgetAttrs(Window_Objs[ACTID_MODE], LISTBROWSER_Position, LBP_PAGEUP, TAG_END ); else if(msg->Qualifier & IEQUALIFIER_CONTROL ) MySetGadgetAttrs(Window_Objs[ACTID_MODE], LISTBROWSER_Position, LBP_TOP, TAG_END ); else MySetGadgetAttrs(Window_Objs[ACTID_MODE], LISTBROWSER_Position, LBP_LINEUP, TAG_END ); GetAttr( LISTBROWSER_Selected, Window_Objs[ACTID_MODE], &mode); FillUnit(); NewMode(mode); GUINewMode(); break; } case 0x4D: { /* ** DOWN - Move entry down. ** SHIFT + DOWN - Move page down. ** CTRL + DOWN - Move to the end. **/ ULONG mode = 0; if(msg->Qualifier & ( IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT )) MySetGadgetAttrs(Window_Objs[ACTID_MODE], LISTBROWSER_Position, LBP_PAGEDOWN, TAG_END ); else if(msg->Qualifier & IEQUALIFIER_CONTROL ) MySetGadgetAttrs(Window_Objs[ACTID_MODE], LISTBROWSER_Position, LBP_BOTTOM, TAG_END ); else MySetGadgetAttrs(Window_Objs[ACTID_MODE], LISTBROWSER_Position, LBP_LINEDOWN, TAG_END ); GetAttr( LISTBROWSER_Selected, Window_Objs[ACTID_MODE], &mode); FillUnit(); NewMode(mode); GUINewMode(); break; } case 0x4f: { /* ** LEFT - Prev unit */ LONG pos = 0; int i; char **u = Units; for(i=0; *u; i++, u++); GetAttr( CHOOSER_Active, Window_Objs[ACTID_UNIT], (ULONG *) &pos ); pos = (pos - 1) % i; if(pos < 0) pos += i; MySetGadgetAttrs(Window_Objs[ACTID_UNIT], CHOOSER_Active, pos, TAG_END ); GetAttr( CHOOSER_Active, Window_Objs[ACTID_UNIT], (ULONG *) &pos); FillUnit(); NewUnit(pos); GUINewUnit(); break; } case 0x4e: { /* ** RIGHT - Prev unit */ LONG pos = 0; int i; char **u = Units; for(i=0; *u; i++, u++); GetAttr( CHOOSER_Active, Window_Objs[ACTID_UNIT], (ULONG *) &pos ); pos = (pos + 1) % i;; MySetGadgetAttrs(Window_Objs[ACTID_UNIT], CHOOSER_Active, pos, TAG_END ); GetAttr( CHOOSER_Active, Window_Objs[ACTID_UNIT], (ULONG *) &pos); FillUnit(); NewUnit(pos); GUINewUnit(); break; } } }
void SVGScriptElement::GetCrossOrigin(nsAString & aOrigin) { GetAttr(kNameSpaceID_None, nsGkAtoms::crossorigin, aOrigin); }
static void HOOKCALL IDCMPhookFunc( REG( a0, struct Hook *hook ), REG( a2, Object *obj ), REG( a1, struct IntuiMessage *msg) ) { switch(msg->Code) { case 0x42: { /* ** TAB - Next page ** SHIFT + TAB - Prev page */ ULONG pos = 0; GetAttr( MX_Active, Window_Objs[ACTID_TABS], &pos ); if ( msg->Qualifier & ( IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT )) pos--; else pos++; SetGadgetAttrs(( struct Gadget * ) Window_Objs[ACTID_TABS], window, NULL, MX_Active, pos, TAG_END ); break; } case 0x4C: { /* ** UP - Move entry up. ** SHIFT + UP - Move page up. ** CTRL + UP - Move to the top. **/ ULONG mode = 0; if(msg->Qualifier & ( IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT )) SetGadgetAttrs((struct Gadget *) Window_Objs[ACTID_MODE], window, NULL, LISTV_Select, LISTV_Select_Page_Up, TAG_END ); else if(msg->Qualifier & IEQUALIFIER_CONTROL ) SetGadgetAttrs((struct Gadget *) Window_Objs[ACTID_MODE], window, NULL, LISTV_Select, LISTV_Select_First, TAG_END ); else SetGadgetAttrs((struct Gadget *) Window_Objs[ACTID_MODE], window, NULL, LISTV_Select, LISTV_Select_Previous, TAG_END ); GetAttr( LISTV_LastClickedNum, Window_Objs[ACTID_MODE], &mode); FillUnit(); NewMode(mode); GUINewMode(); break; } case 0x4D: { /* ** DOWN - Move entry down. ** SHIFT + DOWN - Move page down. ** CTRL + DOWN - Move to the end. **/ ULONG mode = 0; if(msg->Qualifier & ( IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT )) SetGadgetAttrs((struct Gadget *) Window_Objs[ACTID_MODE], window, NULL, LISTV_Select, LISTV_Select_Page_Down, TAG_END ); else if(msg->Qualifier & IEQUALIFIER_CONTROL ) SetGadgetAttrs((struct Gadget *) Window_Objs[ACTID_MODE], window, NULL, LISTV_Select, LISTV_Select_Last, TAG_END ); else SetGadgetAttrs((struct Gadget *) Window_Objs[ACTID_MODE], window, NULL, LISTV_Select, LISTV_Select_Next, TAG_END ); GetAttr( LISTV_LastClickedNum, Window_Objs[ACTID_MODE], &mode); FillUnit(); NewMode(mode); GUINewMode(); break; } case 0x4f: { /* ** LEFT - Prev unit */ LONG pos = 0; int i; char **u = Units; for(i=0; *u; i++, u++); GetAttr( CYC_Active, Window_Objs[ACTID_UNIT], (ULONG *) &pos ); pos = (pos - 1) % i; if(pos < 0) pos += i; SetGadgetAttrs(( struct Gadget * ) Window_Objs[ACTID_UNIT], window, NULL, CYC_Active, pos, TAG_END ); GetAttr( CYC_Active, Window_Objs[ACTID_UNIT], (ULONG *) &pos); FillUnit(); NewUnit(pos); GUINewUnit(); break; } case 0x4e: { /* ** RIGHT - Prev unit */ LONG pos = 0; int i; char **u = Units; for(i=0; *u; i++, u++); GetAttr( CYC_Active, Window_Objs[ACTID_UNIT], (ULONG *) &pos ); pos = (pos + 1) % i;; SetGadgetAttrs(( struct Gadget * ) Window_Objs[ACTID_UNIT], window, NULL, CYC_Active, pos, TAG_END ); GetAttr( CYC_Active, Window_Objs[ACTID_UNIT], (ULONG *) &pos); FillUnit(); NewUnit(pos); GUINewUnit(); break; } } }
void SVGMotionSMILAnimationFunction:: RebuildPathAndVerticesFromBasicAttrs(const nsIContent* aContextElem) { NS_ABORT_IF_FALSE(!HasAttr(nsGkAtoms::path), "Should be using |path| attr if we have it"); NS_ABORT_IF_FALSE(!mPath, "regenerating when we aleady have path"); NS_ABORT_IF_FALSE(mPathVertices.IsEmpty(), "regenerating when we already have vertices"); if (!aContextElem->IsSVG()) { NS_ERROR("Uh oh, SVG animateMotion element targeting a non-SVG node"); return; } SVGMotionSMILPathUtils::PathGenerator pathGenerator(static_cast<const nsSVGElement*>(aContextElem)); bool success = false; if (HasAttr(nsGkAtoms::values)) { // Generate path based on our values array mPathSourceType = ePathSourceType_ValuesAttr; const nsAString& valuesStr = GetAttr(nsGkAtoms::values)->GetStringValue(); SVGMotionSMILPathUtils::MotionValueParser parser(&pathGenerator, &mPathVertices); success = NS_SUCCEEDED(nsSMILParserUtils::ParseValuesGeneric(valuesStr, parser)); } else if (HasAttr(nsGkAtoms::to) || HasAttr(nsGkAtoms::by)) { // Apply 'from' value (or a dummy 0,0 'from' value) if (HasAttr(nsGkAtoms::from)) { const nsAString& fromStr = GetAttr(nsGkAtoms::from)->GetStringValue(); success = pathGenerator.MoveToAbsolute(fromStr); mPathVertices.AppendElement(0.0); } else { // Create dummy 'from' value at 0,0, if we're doing by-animation. // (NOTE: We don't add the dummy 0-point to our list for *to-animation*, // because the nsSMILAnimationFunction logic for to-animation doesn't // expect a dummy value. It only expects one value: the final 'to' value.) pathGenerator.MoveToOrigin(); if (!HasAttr(nsGkAtoms::to)) { mPathVertices.AppendElement(0.0); } success = true; } // Apply 'to' or 'by' value if (success) { double dist; if (HasAttr(nsGkAtoms::to)) { mPathSourceType = ePathSourceType_ToAttr; const nsAString& toStr = GetAttr(nsGkAtoms::to)->GetStringValue(); success = pathGenerator.LineToAbsolute(toStr, dist); } else { // HasAttr(nsGkAtoms::by) mPathSourceType = ePathSourceType_ByAttr; const nsAString& byStr = GetAttr(nsGkAtoms::by)->GetStringValue(); success = pathGenerator.LineToRelative(byStr, dist); } if (success) { mPathVertices.AppendElement(dist); } } } if (success) { mPath = pathGenerator.GetResultingPath(); } else { // Parse failure. Leave path as null, and clear path-related member data. mPathVertices.Clear(); } }
//======================================================== // Name : GetAttrValue // Desc : get attribute with attribute name, return its value // Param : // Return : //-------------------------------------------------------- // Coder Date Desc // bro 2002-10-29 //======================================================== const char* XNode::GetAttrValue( const char* attrname ) { XAttr *attr = GetAttr( attrname ); return attr ? (const char*)attr->value : NULL; }
BOOL ami_tree_event(struct treeview_window *twin) { /* return TRUE if window destroyed */ ULONG class,result,relevent = 0; ULONG column; uint16 code; struct MenuItem *item; struct node *treenode; struct Node *lbnode; struct node_element *element; char *text; // ULONG editcols[] = {TREE_ELEMENT_TITLE,TREE_ELEMENT_URL}; static WORD gen=0; while((result = RA_HandleInput(twin->objects[OID_MAIN],&code)) != WMHI_LASTMSG) { switch(result & WMHI_CLASSMASK) // class { case WMHI_GADGETUP: switch(result & WMHI_GADGETMASK) { case GID_TREEBROWSER: GetAttrs(twin->gadgets[GID_TREEBROWSER], LISTBROWSER_RelEvent,&relevent, TAG_DONE); switch(relevent) { case LBRE_DOUBLECLICK: GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode); GetListBrowserNodeAttrs(lbnode, LBNA_UserData,(ULONG *)&treenode, TAG_DONE); ami_tree_launch_node(twin->tree,treenode); break; case LBRE_EDIT: GetAttrs(twin->gadgets[GID_TREEBROWSER], LISTBROWSER_SelectedNode,(ULONG *)&lbnode, // LISTBROWSER_RelColumn,(ULONG *)&column, TAG_DONE); GetListBrowserNodeAttrs(lbnode, LBNA_UserData,(ULONG *)&treenode, TAG_DONE); element = tree_find_element(treenode,TREE_ELEMENT_TITLE); GetListBrowserNodeAttrs(lbnode, LBNA_Column,column, LBNCA_Text,(ULONG *)&text, TAG_DONE); element->text = (char *)strdup(text); tree_handle_node_element_changed(twin->tree, element); break; case LBRE_HIDECHILDREN: GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode); GetListBrowserNodeAttrs(lbnode, LBNA_UserData,(ULONG *)&treenode, TAG_DONE); tree_set_node_expanded(twin->tree, treenode, false); break; case LBRE_SHOWCHILDREN: GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode); GetListBrowserNodeAttrs(lbnode, LBNA_UserData,(ULONG *)&treenode, TAG_DONE); tree_set_node_expanded(twin->tree, treenode, true); break; } break; case GID_OPEN: GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode); GetListBrowserNodeAttrs(lbnode, LBNA_UserData,(ULONG *)&treenode, TAG_DONE); ami_tree_launch_node(twin->tree,treenode); break; case GID_NEWF: GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode); if(lbnode) { GetListBrowserNodeAttrs(lbnode, LBNA_UserData,(ULONG *)&treenode, TAG_DONE); } else { treenode = twin->tree->root; } tree_create_folder_node(treenode,(char *)messages_get("TreeNewFolder")); ami_recreate_listbrowser(twin); break; case GID_NEWB: ami_new_bookmark(twin); break; case GID_UP: ami_move_node(twin,AMI_MOVE_UP); break; case GID_DOWN: ami_move_node(twin,AMI_MOVE_DOWN); break; case GID_LEFT: ami_move_node(twin,AMI_MOVE_OUT); break; case GID_DEL: GetAttr(LISTBROWSER_SelectedNode,twin->gadgets[GID_TREEBROWSER],(ULONG *)&lbnode); GetListBrowserNodeAttrs(lbnode, LBNA_UserData,(ULONG *)&treenode, TAG_DONE); tree_delete_node(twin->tree, treenode, false); /* We are recreating the list from scratch as there is no obvious easy way to delete children from a listbrowser list */ ami_recreate_listbrowser(twin); break; } break; /* no menus yet, copied in as will probably need it later case WMHI_MENUPICK: item = ItemAddress(gwin->win->MenuStrip,code); while (code != MENUNULL) { ami_menupick(code,gwin); if(win_destroyed) break; code = item->NextSelect; } break; */ case WMHI_CLOSEWINDOW: ami_tree_close(twin); return TRUE; break; } } return FALSE; }
void SVGIFrameElement::GetSrcdoc(DOMString& srcdoc) { GetAttr(kNameSpaceID_None, nsGkAtoms::srcdoc, srcdoc); }
bool HTMLImageElement::TryCreateResponsiveSelector(nsIContent *aSourceNode, const nsAString *aSrcset, const nsAString *aSizes) { if (!IsSrcsetEnabled()) { return false; } bool pictureEnabled = HTMLPictureElement::IsPictureEnabled(); // Skip if this is not a <source> with matching media query bool isSourceTag = aSourceNode->IsHTMLElement(nsGkAtoms::source); if (isSourceTag) { DebugOnly<Element *> parent(nsINode::GetParentElement()); MOZ_ASSERT(parent && parent->IsHTMLElement(nsGkAtoms::picture)); MOZ_ASSERT(IsPreviousSibling(aSourceNode, this)); MOZ_ASSERT(pictureEnabled); // Check media and type HTMLSourceElement *src = static_cast<HTMLSourceElement*>(aSourceNode); if (!src->MatchesCurrentMedia()) { return false; } nsAutoString type; if (aSourceNode->GetAttr(kNameSpaceID_None, nsGkAtoms::type, type) && !SupportedPictureSourceType(type)) { return false; } } else if (aSourceNode->IsHTMLElement(nsGkAtoms::img)) { // Otherwise this is the <img> tag itself MOZ_ASSERT(aSourceNode == this); } // Skip if has no srcset or an empty srcset nsString srcset; if (aSrcset) { srcset = *aSrcset; } else if (!aSourceNode->GetAttr(kNameSpaceID_None, nsGkAtoms::srcset, srcset)) { return false; } if (srcset.IsEmpty()) { return false; } // Try to parse nsRefPtr<ResponsiveImageSelector> sel = new ResponsiveImageSelector(aSourceNode); if (!sel->SetCandidatesFromSourceSet(srcset)) { // No possible candidates, don't need to bother parsing sizes return false; } if (pictureEnabled && aSizes) { sel->SetSizesFromDescriptor(*aSizes); } else if (pictureEnabled) { nsAutoString sizes; aSourceNode->GetAttr(kNameSpaceID_None, nsGkAtoms::sizes, sizes); sel->SetSizesFromDescriptor(sizes); } // If this is the <img> tag, also pull in src as the default source if (!isSourceTag) { MOZ_ASSERT(aSourceNode == this); nsAutoString src; if (GetAttr(kNameSpaceID_None, nsGkAtoms::src, src) && !src.IsEmpty()) { sel->SetDefaultSource(src); } } mResponsiveSelector = sel; return true; }