mword *tptr_find_tag(bvm_cache *this_bvm, mword *search_bs, mword *tag){ // tptr_find_tag# if(is_nil(search_bs) || is_nil(tag)){ return nil; } mword *search_tag; if(is_tptr(tag)){ search_tag = tag; } else{ search_tag = tptr_new(this_bvm, tag, nil); } mword *sub_list = bstruct_find(this_bvm, search_bs, search_tag); mword *result = nil; while(!is_nil(sub_list)){ result = _cons(this_bvm, rci(rci(sub_list,0),0), result); sub_list = (mword*)icdr(sub_list); } return result; }
DSN_API void dsn_file_copy_remote_files(dsn_address_t remote, const char* source_dir, const char** source_files, const char* dest_dir, bool overwrite, dsn_task_t cb) { std::shared_ptr< ::dsn::remote_copy_request> rci(new ::dsn::remote_copy_request()); rci->source = remote; rci->source_dir = source_dir; rci->files.clear(); const char** p = source_files; while (*p != nullptr && **p != '\0') { rci->files.push_back(std::string(*p)); p++; dinfo("copy remote file %s from %s", *(p-1), rci->source.to_string() ); } rci->dest_dir = dest_dir; rci->overwrite = overwrite; ::dsn::aio_task* callback((::dsn::aio_task*)cb); ::dsn::task::get_current_nfs()->call(rci, callback); }
void QSegmentWidget::DrawCylinder(const Cylinder &cyl, const SegmentList &s, const bool erase) { if (!m_pixmap) InitPixmap(); qreal border = 0; QPainter painter(m_pixmap); painter.setRenderHint(QPainter::Antialiasing); painter.setRenderHint(QPainter::SmoothPixmapTransform); painter.setWindow( -(BM_OSIZE / 2), -(BM_OSIZE / 2), BM_OSIZE, BM_OSIZE); QRectF rco(-cyl.outerRadius, -cyl.outerRadius, (cyl.outerRadius * 2.0)+border, (cyl.outerRadius * 2.0)+border); QRectF rci(-cyl.innerRadius, -cyl.innerRadius, (cyl.innerRadius * 2.0)+border, (cyl.innerRadius * 2.0)+border); QRegion ro(rco.toRect(), QRegion::Rectangle); QRegion ri(rci.toRect(), QRegion::Ellipse); QRegion region = ro.subtracted(ri); painter.setClipRegion(region); if (erase) { painter.setBrush(Qt::NoBrush); painter.setPen(Qt::NoPen); } else { QBrush b(cyl.color); painter.setBrush(b); painter.setPen(QPen(cyl.color.darker(200),border)); } DrawSegments(&painter, s, cyl.outerRadius); }
mword is_false_inte(mword *bs){ // is_false_inte# int i; for(i=0;i<size(bs);i++){ if(!is_nil(rci(bs,i))){ return 0; } } return 1; }
void CGfxPopupMenu::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct) { // lpMeasureItemStruct->itemWidth = 200; // lpMeasureItemStruct->itemHeight = 25; bool res = false; if (lpMeasureItemStruct->CtlType == ODT_MENU) { UINT id = lpMeasureItemStruct->itemID; SpawnItem * pItem = (SpawnItem *) lpMeasureItemStruct->itemData; if (pItem) { if (pItem->iCmd == -3) // is a separator { lpMeasureItemStruct->itemWidth = 10; lpMeasureItemStruct->itemHeight = 6; } else { CString cs(pItem->cText); if (!cs.IsEmpty()) { CClientDC dc(AfxGetMainWnd()); CFont * pft = CFont::FromHandle(hMenuFont ? hMenuFont : hGuiFont); CFont * of = dc.SelectObject(pft); CSize osz = dc.GetOutputTabbedTextExtent(cs,0,NULL); if (pItem->iCmd == -4) { CRect rci(0,0,0,0); dc.DrawText(cs, rci, DT_CALCRECT|DT_TOP|DT_VCENTER|DT_SINGLELINE); lpMeasureItemStruct->itemHeight = rci.Height(); lpMeasureItemStruct->itemWidth = rci.Width(); } else { lpMeasureItemStruct->itemHeight = szImage.cy + 5; if (osz.cy > (int) lpMeasureItemStruct->itemHeight) lpMeasureItemStruct->itemHeight = (int) osz.cy; lpMeasureItemStruct->itemWidth = osz.cx + 2 + 15; lpMeasureItemStruct->itemWidth += lpMeasureItemStruct->itemHeight > (UINT) szImage.cx ? (UINT) lpMeasureItemStruct->itemHeight : (UINT) szImage.cx; } dc.SelectObject(of); } else { lpMeasureItemStruct->itemHeight = szImage.cy + 5; lpMeasureItemStruct->itemWidth = 100; } } } } }
DSN_API void dsn_file_copy_remote_directory(dsn_address_t remote, const char* source_dir, const char* dest_dir, bool overwrite, dsn_task_t cb) { std::shared_ptr< ::dsn::remote_copy_request> rci(new ::dsn::remote_copy_request()); rci->source = remote; rci->source_dir = source_dir; rci->files.clear(); rci->dest_dir = dest_dir; rci->overwrite = overwrite; ::dsn::aio_task* callback((::dsn::aio_task*)cb); ::dsn::task::get_current_nfs()->call(rci, callback); }
mword *_babel_root(bvm_cache *this_bvm, mword *loaded_bvm){ // _babel_root# #ifdef BABEL_RESET_TRACE _trace; #endif bvm_cache new_bvm; bvm_cache *new_bvm_ptr = &new_bvm; cache_new(this_bvm, new_bvm_ptr, loaded_bvm); mword *bvm_initd = rci(cache_read_from_bvm(this_bvm, BABEL_SYM_BVM_INITD),0); if(!rcl(bvm_initd,0)){ bvm_new(new_bvm_ptr); lcl(bvm_initd,0) = 1; } else{ cache_update(new_bvm_ptr); } new_bvm_ptr->flags->BVM_CACHE_DIRTY = FLAG_CLR; new_bvm_ptr->flags->BVM_CACHE_INVALID = FLAG_CLR; babel_root_code_injection_point(new_bvm_ptr); new_bvm_ptr->flags->BVM_CODE_LIST_EMPTY = FLAG_CLR; interp_core(new_bvm_ptr); this_bvm->flags->BVM_CACHE_DIRTY = FLAG_CLR; this_bvm->flags->BVM_CACHE_INVALID = FLAG_CLR; // XXX Enhancement: handle return-from-root // if(new_bvm_ptr->flags->BVM_CODE_LIST_EMPTY == FLAG_SET){ // _msg("BVM_CODE_LIST_EMPTY"); // } return nil; }
CL_Error CL_RIFFImage::Locate(char const * iname, int const enum_id) { _LOGPRINT(("RIF File image finder called for %s, id %d\n",iname,enum_id)); if (!Env_Chunk) _LOGPUT("WARNING! no .RIF file loaded\n"); if (!Env_Chunk) return CLE_RIFFERROR; switch (imode) { case CLM_ATTACHEDPALETTE: case CLM_16BIT: case CLM_24BIT: case CLM_32BIT: case CLM_GLOBALPALETTE: case CLM_TLTPALETTE: break; default: _LOGPUT("WARNING! undefined video mode\n"); return CLE_INVALIDDXMODE; } // remove projectsubdirectory from start of image name if it is there unsigned int const psdirlen = strlen(projectsubdirectory); if (!strncmp(projectsubdirectory,iname,psdirlen)) iname += psdirlen; List<Chunk *> envdl (Env_Chunk->lookup_child("REBENVDT")); if (!envdl.size()) { _LOGPUT("WARNING! no environment data chunk\n"); return CLE_RIFFERROR; } Environment_Data_Chunk * envd = (Environment_Data_Chunk *) envdl.first_entry(); CL_Error retval = CLE_OK; Environment_Game_Mode_Chunk * egmc = 0; if (game_mode) { if (*game_mode) { List<Chunk *> egmcl (envd->lookup_child("GAMEMODE")); for (LIF<Chunk *> egmci(&egmcl); !egmci.done(); egmci.next()) { Environment_Game_Mode_Chunk * egmcm = (Environment_Game_Mode_Chunk *) egmci(); if (egmcm->id_equals(game_mode)) { egmc = egmcm; break; } } if (!egmc) retval = CLE_INVALIDGAMEMODE; // only returns this error if the game mode cannot be found *and* the image is not listed } } if (name) { delete[] name; name = 0; } if (iname) name = strip_file_extension(strip_path(iname)); char * rcname = 0; if (iname) { if (strchr(iname,'\\')) { rcname = new char[strlen(iname)+1]; strcpy(rcname,iname); *strchr(rcname,'\\')=0; } else if (strchr(iname,'/')) { rcname = new char[strlen(iname)+1]; strcpy(rcname,iname); *strchr(rcname,'/')=0; } } if (egmc) { int shapefoundingm = rcname ? 0 : 1; // Get the matching image 'Processor' chunk List<Chunk *> micl = egmc->lookup_child("MATCHIMG"); Matching_Images_Chunk * mic = 0; if (micl.size()) mic = (Matching_Images_Chunk *)micl.first_entry(); List<Chunk *> rcl = egmc->lookup_child("RIFCHILD"); for (LIF<Chunk *> rci(&rcl); !rci.done(); rci.next()) { RIF_Child_Chunk * rcm = (RIF_Child_Chunk *) rci(); if (rcname) { if (_stricmp(rcname,rcm->rifname) && (*rcname || *rcm->filename)) continue; shapefoundingm = 1; } for (LIF<BMP_Flags> bmpfi(&rcm->bmps); !bmpfi.done(); bmpfi.next()) { BMP_Flags bmpft(bmpfi()); strip_file_extension(bmpft.filename); if (iname ? !_stricmp(name,strip_path(bmpft.filename)) : enum_id == bmpft.enum_id) { // select image descriptor ImageDescriptor const idsc ( *rcm->filename ? (IDscFlags)((bmpft.flags & ChunkBMPFlag_FixedPalette ? IDSCF_FIXEDPALETTE : IDSCF_0) |IDSCF_INCLUDED) : IDSCF_0, bmpfi().filename, *rcm->filename ? rcm->rifname : 0 ); ImageDescriptor const * p_idsc = &idsc; if (mic) p_idsc = &mic->GetLoadImage(idsc); else _LOGPRINT(("WARNING! no rule to find matching images in game mode %s\n",egmc->header->mode_identifier)); // load this image GetPath(*p_idsc,envd,bmpft.flags); if (fname) { if (rcname) { delete[] rcname; rcname = 0; } flags.located = 1; return CLE_OK; } } } } List<Chunk *> ssc = egmc->lookup_child("SHBMPNAM"); for (LIF<Chunk *> ssi(&ssc); !ssi.done(); ssi.next()) { External_Shape_BMPs_Store_Chunk * ss = (External_Shape_BMPs_Store_Chunk *) ssi(); if (rcname) if (_stricmp(rcname,ss->shapename) && *rcname) continue; for (LIF<BMP_Name> bmpfi(&ss->bmps); !bmpfi.done(); bmpfi.next()) { BMP_Name bmpft(bmpfi()); strip_file_extension(bmpft.filename); if (iname ? !_stricmp(name,strip_path(bmpft.filename)) : enum_id == bmpft.enum_id) { // select image descriptor ImageDescriptor const idsc ( (IDscFlags)((bmpft.flags & ChunkBMPFlag_FixedPalette ? IDSCF_FIXEDPALETTE : IDSCF_0) |(ss->GetExtendedData()->flags & GBF_SPRITE ? IDSCF_SPRITE : IDSCF_SUBSHAPE) |IDSCF_INCLUDED), bmpfi().filename, ss->shapename, bmpft.flags & ChunkBMPFlag_FixedPalette ? ss->rifname : 0 ); ImageDescriptor const * p_idsc = &idsc; if (mic) p_idsc = &mic->GetLoadImage(idsc); else _LOGPRINT(("WARNING! no rule to find matching images in game mode %s\n",egmc->header->mode_identifier)); #if TRY_OLD_DIRS // temporary until all textures move to SubShps/All directory if (*p_idsc == idsc) { // select image descriptor ImageDescriptor const idsc2 ( (IDscFlags)((bmpft.flags & ChunkBMPFlag_FixedPalette ? IDSCF_FIXEDPALETTE : IDSCF_0) |(ss->GetExtendedData()->flags & GBF_SPRITE ? IDSCF_SPRITE : IDSCF_0) |IDSCF_INCLUDED), bmpfi().filename, ss->shapename, bmpft.flags & ChunkBMPFlag_FixedPalette ? ss->rifname : 0 ); ImageDescriptor const * p_idsc2 = &idsc2; if (mic) p_idsc2 = &mic->GetLoadImage(idsc2); else _LOGPRINT(("WARNING! no rule to find matching images in game mode %s\n",egmc->header->mode_identifier)); if (*p_idsc2 != idsc2) { _LOGPUT("WARNING! Not listed as in SubShps directory\n"); p_idsc = p_idsc2; } } #endif // load this image GetPath(*p_idsc,envd,bmpft.flags); if (fname) { if (rcname) { delete[] rcname; rcname = 0; } flags.located = 1; return CLE_OK; } } } } if (rcname) { if (!shapefoundingm) _LOGPRINT(("WARNING! shape/sprite %s not found in this RIF file\n",rcname)); else _LOGPRINT(("WARNING! shape/sprite %s does not appear to list %s\n",rcname,name)); } } List<Chunk *> micl = envd->lookup_child("MATCHIMG"); Matching_Images_Chunk * mic_fix = 0; Matching_Images_Chunk * mic_nrm = 0; for (LIF<Chunk *> mici(&micl); !mici.done(); mici.next()) { Matching_Images_Chunk * mic = (Matching_Images_Chunk *)mici(); if (mic->flags & MICF_FIXEDPALETTE) mic_fix = mic; else mic_nrm = mic; } List<Chunk_With_Children *> shapesandsprites; List<Chunk *> shlst = Env_Chunk->lookup_child("REBSHAPE"); for (LIF<Chunk *> shLIF(&shlst); !shLIF.done(); shLIF.next()) { List<Chunk *> shxflst = ((Shape_Chunk *)shLIF())->lookup_child("SHPEXTFL"); if (shxflst.size()) { shapesandsprites.add_entry( (Shape_External_File_Chunk *)shxflst.first_entry() ); } } shlst = Env_Chunk->lookup_child("RSPRITES"); if (shlst.size()) { List<Chunk *> splst = ((Chunk_With_Children *)shlst.first_entry())->lookup_child("SPRIHEAD"); for (LIF<Chunk *> spLIF(&splst); !spLIF.done(); spLIF.next()) { shapesandsprites.add_entry( (Chunk_With_Children *)spLIF() ); } } int shapefound = rcname ? 0 : 1; for (LIF<Chunk_With_Children *> sasLIF(&shapesandsprites); !sasLIF.done(); sasLIF.next()) { char * subrifname = riff_basename(sasLIF()); if (rcname) { if (_stricmp(subrifname,rcname)) // must match shapes name exactly { delete[] subrifname; continue; } shapefound = 1; } List<Chunk *> blsclst = sasLIF()->lookup_child("BMPLSTST"); if (blsclst.size()) { Bitmap_List_Store_Chunk * gbnc = (Bitmap_List_Store_Chunk *) blsclst.first_entry(); for (LIF<BMP_Name> bmpni(&gbnc->bmps); !bmpni.done(); bmpni.next()) { BMP_Name bmpnt(bmpni()); strip_file_extension(bmpnt.filename); if (iname ? !_stricmp(name,strip_path(bmpnt.filename)) : enum_id == bmpnt.enum_id) { // select image descriptor char * riffname = riff_basename(envd); ImageDescriptor const idsc ( (IDscFlags)((bmpnt.flags & ChunkBMPFlag_FixedPalette ? IDSCF_FIXEDPALETTE : IDSCF_0) |(gbnc->GetExtendedData()->flags & GBF_SPRITE ? IDSCF_SPRITE : IDSCF_SUBSHAPE) |IDSCF_INCLUDED), bmpni().filename, subrifname, bmpnt.flags & ChunkBMPFlag_FixedPalette ? riffname : 0 ); ImageDescriptor const * p_idsc = &idsc; delete[] riffname; if (bmpnt.flags & ChunkBMPFlag_FixedPalette) { if (mic_fix) p_idsc = &mic_fix->GetLoadImage(idsc); else _LOGPUT("WARNING! no rule to find fixed palette matching images in environment data\n"); } else { if (mic_nrm) p_idsc = &mic_nrm->GetLoadImage(idsc); else _LOGPUT("WARNING! no rule to find matching images in environment data (interface engine?)\n"); } #if TRY_OLD_DIRS // temporary until all textures move to SubShps/All directory if (*p_idsc == idsc) { // select image descriptor char * riffname = riff_basename(envd); ImageDescriptor const idsc2 ( (IDscFlags)((bmpnt.flags & ChunkBMPFlag_FixedPalette ? IDSCF_FIXEDPALETTE : IDSCF_0) |(gbnc->GetExtendedData()->flags & GBF_SPRITE ? IDSCF_SPRITE : IDSCF_0) |IDSCF_INCLUDED), bmpni().filename, subrifname, bmpnt.flags & ChunkBMPFlag_FixedPalette ? riffname : 0 ); ImageDescriptor const * p_idsc2 = &idsc2; delete[] riffname; if (bmpnt.flags & ChunkBMPFlag_FixedPalette) { if (mic_fix) p_idsc2 = &mic_fix->GetLoadImage(idsc2); else _LOGPUT("WARNING! no rule to find fixed palette matching images in environment data\n"); } else { if (mic_nrm) p_idsc2 = &mic_nrm->GetLoadImage(idsc2); else _LOGPUT("WARNING! no rule to find matching images in environment data (interface engine?)\n"); } if (*p_idsc2 != idsc2) { _LOGPUT("WARNING! Not listed as in SubShps directory\n"); p_idsc = p_idsc2; } } #endif // load this image GetPath(*p_idsc,envd,bmpnt.flags); if (fname) { delete[] subrifname; if (rcname) { delete[] rcname; rcname = 0; } flags.located = 1; return CLE_OK; } } } } delete[] subrifname; } if (rcname) { if (!shapefound) _LOGPRINT(("WARNING! shape/sprite %s not found in this RIF file\n",rcname)); else _LOGPRINT(("WARNING! shape/sprite %s does not appear to list %s\n",rcname,name)); delete[] rcname; rcname = 0; } // not found in game textures, so look in default else // but only if there is no virtual shape directory { List<Chunk *> gbncl = envd->lookup_child("BMPNAMES"); if (gbncl.size()) { Global_BMP_Name_Chunk * gbnc = (Global_BMP_Name_Chunk *) gbncl.first_entry(); for (LIF<BMP_Name> bmpni(&gbnc->bmps); !bmpni.done(); bmpni.next()) { BMP_Name bmpnt(bmpni()); strip_file_extension(bmpnt.filename); if (iname ? !_stricmp(name,strip_path(bmpnt.filename)) : enum_id == bmpnt.enum_id) { // select image descriptor ImageDescriptor const idsc (bmpnt.flags & ChunkBMPFlag_FixedPalette ? IDSCF_FIXEDPALETTE : IDSCF_0, bmpni().filename); ImageDescriptor const * p_idsc = &idsc; if (bmpnt.flags & ChunkBMPFlag_FixedPalette) { if (mic_fix) p_idsc = &mic_fix->GetLoadImage(idsc); else _LOGPUT("WARNING! no rule to find fixed palette matching images in environment data\n"); } else { if (mic_nrm) p_idsc = &mic_nrm->GetLoadImage(idsc); else _LOGPUT("WARNING! no rule to find matching images in environment data (interface engine?)\n"); } // load this image GetPath(*p_idsc,envd,bmpnt.flags); if (fname) { flags.located = 1; return CLE_OK; } } } } } if (retval != CLE_OK) return retval; return CLE_FINDERROR; }
mword *_babel(bvm_cache *this_bvm, mword *loaded_bvm, mword *arg_stack, mword *sym_table){ // _babel# bvm_cache new_bvm; bvm_cache *new_bvm_ptr = &new_bvm; mword *result = nil; cache_new(this_bvm, new_bvm_ptr, loaded_bvm); mword *self = tptr_detag(new_bvm_ptr, tptr_detag(new_bvm_ptr, new_bvm_ptr->self)); // Could blow up due to mem_alloc() if( !trie_exists(new_bvm_ptr, self, BABEL_SYM_BVM_INITD, nil) ){ trie_insert( new_bvm_ptr, self, BABEL_SYM_BVM_INITD, nil, _val(new_bvm_ptr,1) ); // trie_insert( new_bvm_ptr, self, BABEL_SYM_BVM_INITD, nil, _val(new_bvm_ptr,0) ); } mword *bvm_initd = rci(cache_read_from_bvm(new_bvm_ptr, BABEL_SYM_BVM_INITD),0); if(!rcl(bvm_initd,0)){ bvm_new(new_bvm_ptr); lcl(bvm_initd,0) = 1; } else{ cache_update(new_bvm_ptr); } if( !trie_exists(new_bvm_ptr, self, BABEL_SYM_CODE_RESTART_POINT, nil) ){ trie_insert( new_bvm_ptr, self, BABEL_SYM_CODE_RESTART_POINT, nil, rci(new_bvm_ptr->code_ptr,0)); } new_bvm_ptr->flags->BVM_CACHE_DIRTY = FLAG_CLR; new_bvm_ptr->flags->BVM_CACHE_INVALID = FLAG_CLR; cache_flush(this_bvm); if(!is_nil(sym_table)){ trie_insert(new_bvm_ptr, tptr_detag(new_bvm_ptr, new_bvm_ptr->self), BABEL_SYM_SOFT_ROOT, nil, sym_table); } trie_insert(new_bvm_ptr, tptr_detag(new_bvm_ptr, new_bvm_ptr->self), BABEL_SYM_PARENT_BVM, nil, this_bvm->self); new_bvm_ptr->flags->BVM_CODE_LIST_EMPTY = FLAG_CLR; while(!is_nil(arg_stack)){ // give the arg-list onto the BVM's dstack interp_push_operand(new_bvm_ptr, rci(arg_stack, 0)); arg_stack = rci(arg_stack,1); } interp_core(new_bvm_ptr); cache_cp(new_bvm_ptr, this_bvm); //update flags and interp this_bvm->self = _ith( this_bvm, trie_lookup_hash( new_bvm_ptr, tptr_detag(new_bvm_ptr, new_bvm_ptr->self), BABEL_SYM_PARENT_BVM, nil), 2 ); cache_update(this_bvm); this_bvm->flags->BVM_CACHE_DIRTY = FLAG_CLR; this_bvm->flags->BVM_CACHE_INVALID = FLAG_CLR; //copy TOS from new_bvm to this_bvm oinfo oi; oi.default_data = nil; oi.required_tag = nil; oi.mask = OI_MASK_ANY; oi.min_size = 0; oi.max_size = 1; if( new_bvm_ptr->flags->BVM_RETURN_TOS_ON_EXIT == FLAG_SET && (new_bvm_ptr->flags->BVM_CODE_LIST_EMPTY == FLAG_SET || (get_advance_type(new_bvm_ptr) == BVM_RETURN))){ get_operands(new_bvm_ptr,1,&oi); result = oi.data; stack_pop(new_bvm_ptr,rci(new_bvm_ptr->dstack_ptr,0)); // stack_push(this_bvm, // rci(this_bvm->dstack_ptr,0), // stack_new_entry( // this_bvm, // oi.data, // nil)); } // Reset all flags in case of re-entry new_bvm_ptr->flags->BVM_RETURN_TOS_ON_EXIT = FLAG_CLR; // FIXME: This restore to previous value, not force-clear new_bvm_ptr->flags->BVM_CODE_LIST_EMPTY = FLAG_CLR; if(get_advance_type(new_bvm_ptr) == BVM_RETURN){ set_advance_type(new_bvm_ptr, BVM_ADVANCE); } this_bvm->flags->BVM_RETURN_TOS_ON_EXIT = FLAG_CLR; this_bvm->flags->BVM_CODE_LIST_EMPTY = FLAG_CLR; return result; }
// XXX The return-value from this function contains unsafe pointers!!! XXX // XXX internal interp use ONLY XXX // XXX If you pass tag=nil, returns ALL tags in bs XXX // XXX PERF: A _tags2ar (like _bs2ar) would be more efficient XXX // mword *tptr_find_tag_unsafe(bvm_cache *this_bvm, mword *bs, mword *tag){ // tptr_find_tag_unsafe# mword *span_array = _bs2ar(this_bvm, bs); mword size_span_array = size(span_array); mword size_inte; mword *tag_list = nil; mword *curr_span_elem; mword *curr_inte_elem; //_dump(span_array); int i,j; for(i=0; i<size_span_array; i++){ curr_span_elem = rci(span_array,i); if(is_inte(curr_span_elem)){ // check each element size_inte = size(curr_span_elem); for(j=0;j<size_inte;j++){ curr_inte_elem = rci(curr_span_elem,j); if(is_nil(curr_inte_elem)){ continue; } if(is_tptr(curr_inte_elem)){ if(is_nil(tag)){ // push onto tag_list if(is_nil(tag_list)){ tag_list = _cons(this_bvm, (curr_span_elem+j), nil); } else{ _unshift(this_bvm, tag_list, (curr_span_elem+j)); } } else{ if( tageq(curr_inte_elem, tag, TAG_SIZE) ){ // push onto tag_list if(is_nil(tag_list)){ tag_list = _cons(this_bvm, (curr_span_elem+j), nil); } else{ _unshift(this_bvm, tag_list, (curr_span_elem+j)); } } } } } } } return tag_list; }
void COutlook2Ctrl::DrawSubItem(CDC * pDC, COL2Folder * oFolder, COL2Item * iItem, COL2SubItem * pSubItem, bool bOver) { CRect rect(pSubItem->rcItem); CFont * of = (CFont *) pDC->SelectObject(&ftItems); pDC->SetBkColor(m_crBackground); switch (pSubItem->dwStyle) { case 0: { pDC->SetTextColor(m_crCmdOther); if (bOver) { pDC->SelectObject(&ftHotItems); } if (pSubItem->hIcon && rect.left+25 < rect.right) { if (pSubItem->hIcon) DrawIconEx(pDC->GetSafeHdc(), rect.left+8, rect.top+1, pSubItem->hIcon,16,16,0,NULL, DI_NORMAL); } rect.left += 28; if (pSubItem->lParam) { COL2CCmdUI pui; pui.pSI = pSubItem; pui.m_nID = pSubItem->lParam; GetOwner()->OnCmdMsg(pui.m_nID, CN_UPDATE_COMMAND_UI, &pui, NULL); if (pui.iRes&2) pDC->FillSolidRect(rect, GetSysColor(COLOR_3DFACE)); // checked pSubItem->iLastStatus = pui.iRes; } pDC->DrawText(pSubItem->csName, rect, DT_SINGLELINE|DT_END_ELLIPSIS|DT_VCENTER); } break; case 1: { pDC->SetTextColor(m_crCmdOther); DWORD dwHotStyle = 0; if (bOver) { #if(WINVER >= 0x0500) dwHotStyle = DFCS_HOT; #endif pDC->SelectObject(&ftHotItems); } CRect rci(rect.left+8, rect.top+2, rect.left + 20, rect.top + 14); if (pSubItem->lParam) { COL2CCmdUI pui; pui.pSI = pSubItem; pui.m_nID = pSubItem->lParam; GetOwner()->OnCmdMsg(pui.m_nID, CN_UPDATE_COMMAND_UI, &pui, NULL); if (!(pui.iRes&2)) pDC->DrawFrameControl(rci, DFC_BUTTON, DFCS_BUTTONRADIO|DFCS_FLAT|dwHotStyle); else pDC->DrawFrameControl(rci, DFC_BUTTON, DFCS_BUTTONRADIO|DFCS_FLAT|DFCS_CHECKED|dwHotStyle); pSubItem->iLastStatus = pui.iRes; } else pDC->DrawFrameControl(rci, DFC_BUTTON, DFCS_BUTTONRADIO|DFCS_FLAT|dwHotStyle); rect.left += 28; pDC->DrawText(pSubItem->csName, rect, DT_SINGLELINE|DT_END_ELLIPSIS|DT_VCENTER); } break; case 2: { pDC->SetTextColor(m_crCmdLink); rect.left += 28; if (bOver) pDC->SelectObject(&ftHotItems); if (pSubItem->lParam) { COL2CCmdUI pui; pui.pSI = pSubItem; pui.m_nID = pSubItem->lParam; GetOwner()->OnCmdMsg(pui.m_nID, CN_UPDATE_COMMAND_UI, &pui, NULL); pSubItem->iLastStatus = pui.iRes; } pDC->DrawText(pSubItem->csName, rect, DT_SINGLELINE|DT_END_ELLIPSIS|DT_VCENTER); } break; case 3: // checkbox { pDC->SetTextColor(m_crCmdOther); DWORD dwHotStyle = 0; if (bOver) { #if(WINVER >= 0x0500) dwHotStyle = DFCS_HOT; #endif pDC->SelectObject(&ftHotItems); } CRect rci(rect.left+8, rect.top+2, rect.left + 20, rect.top + 14); if (pSubItem->lParam) { COL2CCmdUI pui; pui.pSI = pSubItem; pui.m_nID = pSubItem->lParam; GetOwner()->OnCmdMsg(pui.m_nID, CN_UPDATE_COMMAND_UI, &pui, NULL); if (!(pui.iRes&2)) pDC->DrawFrameControl(rci, DFC_BUTTON, DFCS_BUTTONCHECK|DFCS_FLAT|dwHotStyle); else pDC->DrawFrameControl(rci, DFC_BUTTON, DFCS_BUTTONCHECK|DFCS_FLAT|DFCS_CHECKED|dwHotStyle); pSubItem->iLastStatus = pui.iRes; } else pDC->DrawFrameControl(rci, DFC_BUTTON, DFCS_BUTTONCHECK|DFCS_FLAT|dwHotStyle); rect.left += 28; pDC->DrawText(pSubItem->csName, rect, DT_SINGLELINE|DT_END_ELLIPSIS|DT_VCENTER); } break; } pDC->SelectObject(of); }