/* メインダイアログ用 WM_INITDIALOG 処理ルーチン */ BOOL TInstDlg::EvCreate(LPARAM lParam) { GetWindowRect(&rect); int cx = ::GetSystemMetrics(SM_CXFULLSCREEN), cy = ::GetSystemMetrics(SM_CYFULLSCREEN); int xsize = rect.right - rect.left, ysize = rect.bottom - rect.top; ::SetClassLong(hWnd, GCL_HICON, (LONG_PTR)::LoadIcon(TApp::GetInstance(), (LPCSTR)SETUP_ICON)); MoveWindow((cx - xsize)/2, (cy - ysize)/2, xsize, ysize, TRUE); Show(); // プロパティシートの生成 staticText.AttachWnd(GetDlgItem(INSTALL_STATIC)); propertySheet = new TInstSheet(this, &cfg); // 現在ディレクトリ設定 char buf[MAX_PATH], setupDir[MAX_PATH]; TRegistry reg(HKEY_LOCAL_MACHINE, BY_MBCS); // タイトル設定 if (IsWinVista() && TIsUserAnAdmin()) { GetWindowText(buf, sizeof(buf)); strcat(buf, " (Admin)"); SetWindowText(buf); } // Program Filesのパス取り出し if (reg.OpenKey(REGSTR_PATH_SETUP)) { if (reg.GetStr(REGSTR_PROGRAMFILES, buf, sizeof(buf))) MakePath(setupDir, buf, FASTCOPY); reg.CloseKey(); } // 既にセットアップされている場合は、セットアップディレクトリを読み出す if (reg.OpenKey(REGSTR_PATH_UNINSTALL)) { if (reg.OpenKey(FASTCOPY)) { if (reg.GetStr(REGSTR_VAL_UNINSTALLER_COMMANDLINE, setupDir, sizeof(setupDir))) { GetParentDir(setupDir, setupDir); } reg.CloseKey(); } reg.CloseKey(); } if (!cfg.startMenu || !cfg.deskTop) { GetShortcutPath(&cfg); } SetDlgItemText(FILE_EDIT, cfg.setupDir ? toA(cfg.setupDir) : setupDir); CheckDlgButton(cfg.mode == SETUP_MODE ? SETUP_RADIO : UNINSTALL_RADIO, 1); ChangeMode(); if (cfg.runImme) PostMessage(WM_COMMAND, MAKEWORD(IDOK, 0), 0); return TRUE; }
Lab_Colour ColourPickerConversions::toLab(RGB_Colour colour) { float X = toX(colour.r, colour.g, colour.b); float Y = toY(colour.r, colour.g, colour.b); float Z = toZ(colour.r, colour.g, colour.b); float L = toL(Y); float a = toA(X, Y); float b = toB(Y, Z); return Lab_Colour(L, a, b); }
Attribute* AttsCache::find(const QName& attName) { int ndx = findNdx(attName); // need to use a temporary variable // to get around Solaris template problem if (ndx != -1) { Vertex * pTemp = (*this)[ndx]; return toA(pTemp); } else { return NULL; } }
int AttsCache::findNdx(const QName& attName) { int i; Attribute *a; int num = number(); for (i = 0; i < num; i++) { // need to use a temporary variable // to get around Solaris template problem Vertex * pTemp = (*this)[i]; a = toA(pTemp); if (attName == a -> getName()) return i; }; return -1; }
BOOL TInstDlg::Install(void) { char buf[MAX_PATH], setupDir[MAX_PATH], setupPath[MAX_PATH]; BOOL is_delay_copy = FALSE; int len; // インストールパス設定 len = GetDlgItemText(FILE_EDIT, setupDir, sizeof(setupDir)); if (GetChar(setupDir, len-1) == '\\') SetChar(setupDir, len-1, 0); Wstr w_setup(setupDir); if (IsWinVista() && TIsVirtualizedDirV(w_setup.Buf())) { if (!TIsUserAnAdmin()) { return RunAsAdmin(TRUE); } else if (cfg.runImme && cfg.setupDir && lstrcmpiV(w_setup.Buf(), cfg.setupDir)) { return MessageBox(GetLoadStr(IDS_ADMINCHANGE)), FALSE; } } CreateDirectory(setupDir, NULL); DWORD attr = GetFileAttributes(setupDir); if (attr == 0xffffffff || (attr & FILE_ATTRIBUTE_DIRECTORY) == 0) return MessageBox(GetLoadStr(IDS_NOTCREATEDIR)), FALSE; MakePath(setupPath, setupDir, FASTCOPY_EXE); if (MessageBox(GetLoadStr(IDS_START), INSTALL_STR, MB_OKCANCEL|MB_ICONINFORMATION) != IDOK) return FALSE; // ファイルコピー if (cfg.mode == SETUP_MODE) { char installPath[MAX_PATH], orgDir[MAX_PATH]; ::GetModuleFileName(NULL, orgDir, sizeof(orgDir)); GetParentDir(orgDir, orgDir); for (int cnt=0; SetupFiles[cnt] != NULL; cnt++) { MakePath(buf, orgDir, SetupFiles[cnt]); MakePath(installPath, setupDir, SetupFiles[cnt]); if (MiniCopy(buf, installPath) || IsSameFile(buf, installPath)) continue; if ((strcmp(SetupFiles[cnt], CURRENT_SHEXTDLL_EX) == 0 || strcmp(SetupFiles[cnt], CURRENT_SHEXTDLL) == 0) && DelayCopy(buf, installPath)) { is_delay_copy = TRUE; continue; } return MessageBox(installPath, GetLoadStr(IDS_NOTCREATEFILE)), FALSE; } } // スタートメニュー&デスクトップに登録 char *linkPath[] = { toA(cfg.startMenu, TRUE), toA(cfg.deskTop, TRUE), NULL }; BOOL execFlg[] = { cfg.programLink, cfg.desktopLink, NULL }; for (int cnt=0; linkPath[cnt]; cnt++) { strcpy(buf, linkPath[cnt]); if (cnt != 0 || RemoveSameLink(linkPath[cnt], buf) == FALSE) { ::wsprintf(buf + strlen(buf), "\\%s", FASTCOPY_SHORTCUT); } if (execFlg[cnt]) { if (IS_WINNT_V) { Wstr w_setup(setupPath, BY_MBCS); Wstr w_buf(buf, BY_MBCS); SymLinkV(w_setup.Buf(), w_buf.Buf()); } else { SymLinkV(setupPath, buf); } } else { if (IS_WINNT_V) { Wstr w_buf(buf, BY_MBCS); DeleteLinkV(w_buf.Buf()); } else { DeleteLinkV(buf); } } } #if 0 // レジストリにアンインストール情報を登録 if (reg.OpenKey(REGSTR_PATH_UNINSTALL)) { if (reg.CreateKey(FASTCOPY)) { MakePath(buf, setupDir, INSTALL_EXE); strcat(buf, " /r"); reg.SetStr(REGSTR_VAL_UNINSTALLER_DISPLAYNAME, FASTCOPY); reg.SetStr(REGSTR_VAL_UNINSTALLER_COMMANDLINE, buf); reg.CloseKey(); } reg.CloseKey(); } #endif if (IsWinVista() && TIsVirtualizedDirV(w_setup.Buf())) { WCHAR wbuf[MAX_PATH] = L"", old_path[MAX_PATH] = L"", usr_path[MAX_PATH] = L""; WCHAR fastcopy_dir[MAX_PATH], *fastcopy_dirname = NULL; GetFullPathNameW(w_setup.Buf(), MAX_PATH, fastcopy_dir, &fastcopy_dirname); if (cfg.appData) { strcpyV(usr_path, cfg.appData); } else { TSHGetSpecialFolderPathV(NULL, wbuf, CSIDL_APPDATA, FALSE); MakePathV(usr_path, wbuf, fastcopy_dirname); } ConvertVirtualStoreConf(w_setup.Buf(), usr_path, cfg.virtualDir); } // コピーしたアプリケーションを起動 const char *msg = GetLoadStr(is_delay_copy ? IDS_DELAYSETUPCOMPLETE : IDS_SETUPCOMPLETE); int flg = MB_OKCANCEL|MB_ICONINFORMATION; if (IsWin7()) { msg = Fmt("%s%s", msg, GetLoadStr(IDS_COMPLETE_WIN7)); } TLaunchDlg dlg(msg, this); UINT id; if ((id = dlg.Exec()) == IDOK || id == LAUNCH_BUTTON) { char *arg = (id == LAUNCH_BUTTON) ? "/install" : ""; ShellExecute(NULL, "open", setupPath, arg, setupDir, SW_SHOW); } ::PostQuitMessage(0); return TRUE; }
void LinearConvexCastDemo::displayCallback(void) { updateCamera(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glDisable(GL_LIGHTING); //GL_ShapeDrawer::DrawCoordSystem(); float m[16]; int i; for (i=0;i<numObjects;i++) { tr[i].getOpenGLMatrix( m ); GL_ShapeDrawer::DrawOpenGL(m,shapePtr[i],SimdVector3(1,1,1),getDebugMode()); } int shapeIndex = 1; SimdQuaternion orn; orn.setEuler(yaw,pitch,roll); tr[shapeIndex].setRotation(orn); if (m_stepping || m_singleStep) { m_singleStep = false; pitch += 0.005f; yaw += 0.01f; } SimdVector3 fromA(-25,11,0); SimdVector3 toA(15,11,0); SimdQuaternion ornFromA(0.f,0.f,0.f,1.f); SimdQuaternion ornToA(0.f,0.f,0.f,1.f); SimdTransform rayFromWorld(ornFromA,fromA); SimdTransform rayToWorld(ornToA,toA); tr[0] = rayFromWorld; if (drawLine) { glBegin(GL_LINES); glColor3f(0, 0, 1); glVertex3d(rayFromWorld.getOrigin().x(), rayFromWorld.getOrigin().y(),rayFromWorld.getOrigin().z()); glVertex3d(rayToWorld.getOrigin().x(),rayToWorld.getOrigin().y(),rayToWorld.getOrigin().z()); glEnd(); } //now perform a raycast on the shapes, in local (shape) space //choose one of the following lines for (i=1;i<numObjects;i++) { ContinuousConvexCollision convexCaster0(shapePtr[0],shapePtr[i],&gGjkSimplexSolver,0); GjkConvexCast convexCaster1(shapePtr[0],shapePtr[i],&gGjkSimplexSolver); //BU_CollisionPair (algebraic version) is currently broken, will look into this //BU_CollisionPair convexCaster2(shapePtr[0],shapePtr[i]); SubsimplexConvexCast convexCaster3(shapePtr[0],shapePtr[i],&gGjkSimplexSolver); gGjkSimplexSolver.reset(); ConvexCast::CastResult rayResult; if (convexCaster3.calcTimeOfImpact(rayFromWorld,rayToWorld,tr[i],tr[i],rayResult)) { glDisable(GL_DEPTH_TEST); SimdVector3 hitPoint; hitPoint.setInterpolate3(rayFromWorld.getOrigin(),rayToWorld.getOrigin(),rayResult.m_fraction); //draw the raycast result glBegin(GL_LINES); glColor3f(1, 1, 1); glVertex3d(rayFromWorld.getOrigin().x(), rayFromWorld.getOrigin().y(),rayFromWorld.getOrigin().z()); glVertex3d(hitPoint.x(),hitPoint.y(),hitPoint.z()); glEnd(); glEnable(GL_DEPTH_TEST); SimdTransform toTransWorld; toTransWorld = tr[0]; toTransWorld.setOrigin(hitPoint); toTransWorld.getOpenGLMatrix( m ); GL_ShapeDrawer::DrawOpenGL(m,shapePtr[0],SimdVector3(0,1,1),getDebugMode()); } } glFlush(); glutSwapBuffers(); }
eFlag Tree::processVertexAfterParse(Sit S, Vertex *v, TreeConstructer* tc) { //be careful with this test, it might be moved deeper inside this //function if needed if (v -> vt & VT_TOP_FOREIGN) { popVertex(); return OK; } XSL_OP theOp; if (isXSLElement(v)) { XSLElement *x = toX(v); theOp = x -> op; if (theOp != XSL_IMPORT) updateImportStatus(); switch(theOp) { //catch xsl:use-attribute-sets case XSL_ELEMENT: case XSL_COPY: { E( extractUsedSets(S, toE(v)) ); popVertex(); }; break; case XSL_IMPORT: { if (subtrees.getCurrent() -> getStructure() -> getTopLevelFound()) { Err2(S, E_ELEM_CONTAINS_ELEM, xslOpNames[XSL_STYLESHEET], xslOpNames[XSL_IMPORT]); } }; // no break case XSL_INCLUDE: { Attribute *a = NZ( x -> atts.find(XSLA_HREF) ); GP( Tree ) srcTree; const Str& base = S.findBaseURI(a -> getSubtreeInfo() -> getBaseURI()); Str absolute; makeAbsoluteURI(S, a -> cont, base, absolute); if (S.getProcessor()) { E( S.getProcessor() -> readTreeFromURI(S, srcTree, a -> cont, base, FALSE) ); srcTree.keep(); } else { //Str absolute; //makeAbsoluteURI(a -> cont, base, absolute); srcTree = new Tree(absolute, FALSE); DataLine d; E( d.open(S, absolute, DLMODE_READ, /* argList = */ NULL) ); E( (*srcTree).parse(S, &d) ); E( d.close(S) ); } Element *theSheet=(*srcTree).findStylesheet((*srcTree).getRoot()); if (!theSheet) Warn1(S, W_NO_STYLESHEET, (char*)(a -> cont)); dropCurrentElement(v); if (!theSheet) // to prevent segfault after include/import failure break; OutputterObj source; //we start a subtree to record where the nodes come from //when including, we use the old structure //when importing, Tree creates a new one E( startSubtree(S, (*srcTree).getURI(), theOp) ); //set extension namespaces for subtree //(*srcTree).speakDebug(); //merge it into the current tree E( tc -> parseUsingSAXForAWhile(S, source, absolute, TRUE, (Tree*)srcTree, theSheet -> namespaces) ); //first we have to deal with ext. and excl. namespaces Attribute *attr; QName q; //exclusions q.setLocal((*srcTree).unexpand("exclude-result-prefixes")); attr = theSheet->atts.find(q); if (attr) E(pushNamespacePrefixes(S, attr->cont, XSLA_EXCL_RES_PREFIXES)); //extensions q.setLocal((*srcTree).unexpand("extension-element-prefixes")); attr = theSheet->atts.find(q); if (attr) E(pushNamespacePrefixes(S, attr->cont, XSLA_EXT_ELEM_PREFIXES)); if (theSheet) E( theSheet -> contents.copy(S, source) ); E( tc -> parseUsingSAXForAWhileDone(S, source, TRUE) ); // end the subtree E( endSubtree(S, theOp) ); }; break; case XSL_OUTPUT: { int i, attsNumber = x -> atts.number(); Attribute *theAtt; for (i = 0; i < attsNumber; i++) { theAtt = toA(x -> atts[i]); switch(theAtt -> op) { case XSLA_METHOD: { QName q; EQName eq; E( x -> setLogical(S, q, theAtt -> cont, FALSE) ); expandQ(q, eq); E( outputDef.setItemEQName(S, XSLA_METHOD, eq, v, v -> getImportPrecedence()) ); }; break; case XSLA_CDATA_SECT_ELEMS: { QName q; Bool someRemains; Str listPart; char *p = theAtt -> cont; do { someRemains = getWhDelimString(p, listPart); if (someRemains) { E( x -> setLogical(S, q, listPart, TRUE) ); EQName expanded; expandQ(q, expanded); E( outputDef.setItemEQName(S, XSLA_CDATA_SECT_ELEMS, expanded, v, v -> getImportPrecedence()) ); }; } while (someRemains); }; break; case XSLA_NONE: //skip other namespaces break; default: { E( outputDef.setItemStr(S, theAtt -> op, theAtt -> cont, theAtt, theAtt -> getImportPrecedence()) ); }; }; } popVertex(); }; break; case XSL_NAMESPACE_ALIAS: { Phrase style, result, sUri, rUri; Attribute *sp = NZ( x -> atts.find(XSLA_STYLESHEET_PREFIX) ); Attribute *rp = NZ( x -> atts.find(XSLA_RESULT_PREFIX) ); if (sp -> cont == "#default") style = UNDEF_PHRASE; else dict().insert(sp -> cont, style); if (rp -> cont == "#default") result = UNDEF_PHRASE; else dict().insert(rp -> cont, result); int i; i = pendingNS().findNdx(style); if (i != -1) sUri = toNS(pendingNS().operator[](i)) -> uri; else Err1(S, E_EX_NAMESPACE_UNKNOWN, (char*) sp -> cont); i = pendingNS().findNdx(result); if (i != -1) rUri = toNS(pendingNS().operator[](i)) -> uri; else Err1(S, E_EX_NAMESPACE_UNKNOWN, (char*) rp -> cont); aliases().insertAlias(sUri, rUri, result, v -> getImportPrecedence(), x); popVertex(); }; break; case XSL_TEMPLATE: { E( insertRule(S, x) ); popVertex(); }; break; case XSL_ATTRIBUTE_SET: { QName name; E( x -> setLogical(S, name, NZ( x -> atts.find(XSLA_NAME)) -> cont, FALSE) ); AttSet *ptr = attSets().insert(name); E( extractUsedSets(S, toE(v)) ); if (x -> attSetNames(FALSE)) { for (int i = 0; i < x -> attSetNames(FALSE) -> number(); i++) ptr -> insertUses(*(x -> attSetNames(FALSE) -> operator[] (i))); } XSLElement *son; for (int i = 0; i < x -> contents.number(); i++) { sabassert(isXSLElement(x -> contents[i]) && toX(x -> contents[i]) -> op == XSL_ATTRIBUTE); son = toX(x -> contents[i]); E( son -> setLogical(S, name, NZ( son -> atts.find(XSLA_NAME)) -> cont, FALSE) ); ptr -> insertAttributeDef(son, name); } popVertex(); }; break; case XSL_STYLESHEET: case XSL_TRANSFORM: { popVertex(); }; break; case XSL_VARIABLE: case XSL_PARAM: { // only look at top-levels Vertex *par = v -> parent; if (par && isXSLElement(par) && (toX(par) -> op == XSL_STYLESHEET || toX(par) -> op == XSL_TRANSFORM)) { // is top-level -> insert into directory, //with error if there already is an entry // with the same import precedence // find name first QName name; E( x -> setLogical(S, name, NZ( x -> atts.find(XSLA_NAME)) -> cont, FALSE) ); E( toplevelVars.insert(S, name, x) ); } popVertex(); }; break; case XSL_STRIP_SPACE: { SpaceNameList &foo = subtrees.getCurrent() -> getStructure() -> strippedNames(); E( getSpaceNames(S, *x, NZ(x -> atts.find(XSLA_ELEMENTS)) -> cont, foo) ); popVertex(); }; break; case XSL_PRESERVE_SPACE: { SpaceNameList &foo = subtrees.getCurrent() -> getStructure() -> preservedNames(); E( getSpaceNames(S, *x, NZ(x -> atts.find(XSLA_ELEMENTS)) -> cont, foo) ); popVertex(); }; break; default: popVertex(); } //the literal output element may have some xsl features } else { //isXSLElement updateImportStatus(); if (XSLTree) { E( extractUsedSets(S, toE(v)) ); popVertex(); } else { popVertex(); } } return OK; }