BOOL CImage::SetupMaskEditMode() { CMD_PARMS parms; LPOBJECT lpOldBase; COLORINFO Color; static COLORINFO SaveActive, SaveAlternate; if ( !(lpOldBase = (LPOBJECT)AltObjList.lpHead) ) { // turn on mask editing mode GetActiveColor(&SaveActive); GetAlternateColor(&SaveAlternate); Color.gray = 255; SetActiveColor(&Color, CS_GRAY, NO); Color.gray = 0; SetAlternateColor(&Color, CS_GRAY, NO); } else { // turn off mask editing mode SetActiveColor(&SaveActive, SaveActive.ColorSpace, NO); SetAlternateColor(&SaveAlternate, SaveAlternate.ColorSpace, NO); } ProcessCommand(lpCmdList, IDS_CMD_ALPHAEDIT, &parms); return(TRUE); }
// ***************************************************************** void VertexPaint::fillSelectionColor() { int mci; // Put Data in Undo/Redo List. if(!theHold.Holding()) theHold.Begin(); ModContextList modContexts; INodeTab nodeTab; GetCOREInterface()->GetModContexts(modContexts, nodeTab); for (mci=0; mci<modContexts.Count(); mci++) { ModContext *mc = modContexts[mci]; if(mc && mc->localData) theHold.Put(new VertexPaintRestore((VertexPaintData*)mc->localData, this)); } theHold.Accept(GetString(IDS_RESTORE_FILL)); // Which Component to change?? VertexPaintData::TComponent whichComponent; switch(getEditionType()) { case 0: whichComponent= VertexPaintData::Red; break; case 1: whichComponent= VertexPaintData::Green; break; case 2: whichComponent= VertexPaintData::Blue; break; } // Modify all meshes. for (mci=0; mci<modContexts.Count(); mci++) { ModContext *mc = modContexts[mci]; if(mc && mc->localData) { VertexPaintData* d = (VertexPaintData*)mc->localData; Mesh* mesh = d->GetMesh(); if (mesh && mesh->vertCol) { // For all faces of the mesh for(int fi=0; fi<mesh->getNumFaces(); fi++) { Face* f = &mesh->faces[fi]; for (int i=0; i<3; i++) { // Skip painting because not selected?? if(mesh->selLevel == MESH_VERTEX && !mesh->VertSel()[f->v[i]] ) continue; if(mesh->selLevel == MESH_FACE && !mesh->FaceSel()[fi]) continue; // Also skip if face is hidden. if(f->Hidden()) continue; // Apply painting d->SetColor(f->v[i], 1, GetActiveColor(), whichComponent); } } } } } // refresh NotifyDependents(FOREVER, PART_VERTCOLOR, REFMSG_CHANGE); ip->RedrawViews(ip->GetTime()); }