bool CGraphmatFile::IsKey(size_t LB, size_t HB, size_t& GraLast) const { if (GetUnits()[LB].GetToken() == 0) return false; int ch1 = (unsigned char)GetUnits()[LB].GetToken()[0]; int ch2 = (unsigned char)ReverseChar((unsigned char)GetUnits()[LB].GetToken()[0], m_Language); GraLast = LB+1; if (ispunct (ch1)) return false; long i=0; for (; i < m_pDicts->m_Keys.size(); i++) { const char* title = m_pDicts->m_Keys[i].c_str(); if ( ( (ch1 == (unsigned char)title[0]) || (ch2 == (unsigned char)title[0]) ) && FindKeySequence(title,LB, HB, GraLast) ) break; } if (i < m_pDicts->m_Keys.size()) return true; if (IsOneAlpha(LB)) { GraLast = LB+1; return true; }; return false; };
//ctrl-alt-del //control-PgUp //control-Num Lock void CGraphmatFile::DealModifierKey(size_t LB, size_t HB) { size_t SaveStart = LB; if (LB+3 > HB) return ; if (!HasDescr (LB+1, OHyp)) return ; // ищем в модификаторах if (!GetUnits()[LB].IsKeyModifier()) return; LB += 2; if ( (LB+3 <= HB) && HasDescr (LB+1, OHyp) && GetUnits()[LB].IsKeyModifier() ) LB+=2; // ищем в клавишах size_t GraLast; if (!IsKey(LB, HB, GraLast)) return; if (!HasGrouped(SaveStart,GraLast) ) { SetDes (SaveStart, OKey1); SetDes (GraLast-1, OKey2); SetState(SaveStart,GraLast,stGrouped); } };
int CGraphmatFile::DealInternetAddresses (size_t StartPos, size_t EndPos) { size_t i = StartPos; if (!IsProtocolAbbr(i)) return false; i++; if (i == EndPos) return false; if ( (GetUnits()[i].GetTokenLength() != 1) || (((unsigned char)GetUnits()[i].GetToken()[0]) != ':') ) return false; for (; (i<EndPos) && ( HasDescr (i, OPun) || HasDescr (i, OLLE) || HasDescr (i, ODg)) ; i++); if (HasGrouped(StartPos,i)) return false; SetDes (StartPos, OElectAddr1); SetDes (i-1, OElectAddr2); SetState(StartPos,i,stGrouped); return true; };
// электронные адреса типа [email protected] int CGraphmatFile::DealEmailAddresses (size_t StartPos, size_t EndPos) { size_t i = StartPos; if ( (GetUnits()[i].GetTokenLength() != 1) || (((unsigned char)GetUnits()[i].GetToken()[0]) != '@') ) return false; if (i == 0) return false; int nh; for (nh=i-1; nh>=0; nh--) if (!CanBeElectronicAddressCompound (nh)) break; nh++; if (nh == i) return false; int nt; for (nt = i+1; nt<EndPos; nt++) if (!CanBeElectronicAddressCompound (nt)) break; if (nt == i + 1) return false; if (HasGrouped(StartPos,nt)) return false; SetDes (nh, OElectAddr1); SetDes (nt-1, OElectAddr2); SetState(StartPos,nt,stGrouped); return true; };
CString CTimeHelper::FormatTimeHMS(double dTime, int nUnits, int nLeftOverUnits, double dLeftOverMultiplier, BOOL bDecPlaces) { // sanity check if (!IsValidUnit(nUnits) || !IsValidUnit(nLeftOverUnits)) { ASSERT(0); return _T(""); } CString sTime; if (bDecPlaces) { double dLeftOver = ((dTime - (int)dTime) * dLeftOverMultiplier + FUDGE); // omit second element if zero if (((int)dLeftOver) == 0) { sTime.Format(_T("%d%c"), (int)dTime, GetUnits(nUnits)); } else { sTime.Format(_T("%d%c%d%c"), (int)dTime, GetUnits(nUnits), (int)dLeftOver, GetUnits(nLeftOverUnits)); } } else { sTime.Format(_T("%d%c"), (int)(dTime + 0.5), GetUnits(nUnits)); } return sTime; }
int CGraphmatFile::CountSpaces (size_t LB, size_t HB) { int count = 0; for (size_t i = LB; i<=HB; i++) if (GetUnits()[i].IsSpace ()) count += GetUnits()[i].GetScreenLength(); return count; }
// электронные адреса типа http:\\www.medialingua.ru // ftp:\\medialingua.ru bool CGraphmatFile::IsProtocolAbbr (size_t i) { return ( (GetUnits()[i].GetTokenLength() == 4) && !strncmp(GetUppercaseToken(i), "HTTP", 4) )|| ( (GetUnits()[i].GetTokenLength() == 3) && !strncmp(GetUppercaseToken(i), "FTP", 3) ); };
// Convert a CPoint to a Unit CString CString COption::PointToUnit(CDPoint a) { CString r; double Scale = GetUnits()==0 ? (float)PIXELSPERMM : ((float)PIXELSPERMM * 25.4f); double sx = a.x / Scale; double sy = a.y / Scale; r.Format(_T("%.1lf,%.1lf%s"),sx,sy,GetUnits()==0 ? _T("mm") : _T("\"")); return r; }
bool CGraphmatFile::DealAsteriskBullet (size_t LB, size_t HB) { vector<CAsteriskHyp> Hyps; size_t LineNo = 0; size_t i; for (i = LB; i< HB; i++) { if (GetUnits()[i].IsEOLN()) LineNo++; // проверяем, является ли данная графема звездочкой if (!GetUnits()[i].IsAsterisk()) continue; // удостоверяемся, что данная графема не вошла в графематические группы if (GetUnits()[i].IsGrouped() || HasDescr(i,OBullet)) continue; size_t nh = BSpace(i-1); size_t nt = PSpace(i+1,HB); // перед перечислителя должен стоять конец строки if ((nh > 0) && !GetUnits()[nh].IsEOLN()) continue; // проверяем, стоит ли после перечислителя знак препинания, если // стоит, то это не пункт перечисления if (nt == HB) continue; if (HasDescr (nt,OPun)) continue; CAsteriskHyp A; A.LineNo = LineNo; A.UnitNo = i; Hyps.push_back(A); }; for (i=0; i<Hyps.size(); i++) if ( (i+1 == Hyps.size()) || (i == 0) || ( (i+1 < Hyps.size()) && (Hyps[i+1].LineNo < Hyps[i].LineNo + MaxBulletSectionSize) ) || ( (i > 0) && (Hyps[i-1].LineNo + MaxBulletSectionSize < Hyps[i].LineNo) ) ) { SetDes (Hyps[i].UnitNo,OBullet); if (!HasDescr (Hyps[i].UnitNo,OPar)) SetDes(Hyps[i].UnitNo,OPar); }; return true; }
// РЕ1 - РЕ2 int CGraphmatFile::DealReferences (size_t i,size_t HB) { // ч. 1 ст. 2 // п. 1 ст. 2 // п. 1.1 ст. 2 bool is_part_string = (GetUnits()[i].GetTokenLength() == 1) && (GetUnits()[i].GetToken()[0] == 'ч'); bool is_bullet_string = (GetUnits()[i].GetTokenLength() == 1) && (GetUnits()[i].GetToken()[0] == 'п'); if (!is_part_string && !is_bullet_string) return false; size_t nt = i+1; if (nt == HB) return false; if ( !IsOneFullStop(nt)) return false; nt ++; if (nt == HB) return false; size_t k = PSpace (nt,HB); if ((k == HB) || ((k - nt) > 10)) return false; nt = FSpace (k,HB); nt = PSpace (nt,HB); if ( (k == HB) || ((nt -k) > 20)) return false; if ( (GetUnits()[nt].GetTokenLength() != 2) || strncmp (GetUppercaseToken(nt), "ст",2) ) return false; nt++; if (nt == HB) return false; if ( !IsOneFullStop(nt)) return false; nt++; if (nt == HB) return false; nt = PSpace (nt,HB); if (nt == HB) return false; SetDes (i,ORef1); SetDes (nt, ORef2); SetState(i,nt+1,stGrouped); return true; }
void CGraphmatFile::DealGermanDividedCompounds(size_t LB, size_t HB) { size_t i = LB; bool bFound = false; while (i < HB) { if (!HasDescr(i, OLLE)) break; i++; if (i == HB) break; // no space between word and hyphen if (GetUnits()[i-1].GetInputOffset()+ GetUnits()[i-1].GetTokenLength() != GetUnits()[i].GetInputOffset()) break; if (!HasDescr(i, OHyp)) break; i = PSoft(i+1, HB); if (i == HB) break; if ( ( !strncmp(GetUppercaseToken(i), "UND", 3) && (GetUnits()[i].GetTokenLength() == 3) ) || ( !strncmp(GetUppercaseToken(i), "ODER", 4) && (GetUnits()[i].GetTokenLength() == 4) ) ) { i = PSoft(i+1, HB); if (i == HB) break; for (long k=LB; k <= i; k++) if (HasDescr(k, OGerDivComp2)) return; SetDes (LB, OGerDivComp1); SetDes (i, OGerDivComp2); SetState(LB,i+1,stGrouped); return; }; if (!IsOneChar(i, (BYTE)',')) break; i = PSoft(i+1, HB); if (i == HB) break; }; };
void CGraphmatFile::DealKeySequence(size_t LB, size_t HB) { if (!HasDescr(LB, OKey1)) return; long i=LB; for (; i< HB;) { if (!HasDescr(i, OKey1)) break; for (; i < HB; i++) if (HasDescr(i, OKey2)) break; if (i == HB) break; i++; if (i == HB) break; if (GetUnits()[i].IsSoft()) i++; }; if ((i == HB) || !HasDescr(i, OKey2)) i = BSoft(i-1); if (i-LB < 2) return; for (long k=LB; k <= i; k++) { DeleteDescr(k,OKey1); DeleteDescr(k,OKey2); }; SetDes (LB, OKey1); SetDes (i, OKey2); SetState(LB,i+1,stGrouped); };
void HRuler::glCommands(bool select, bool marked, bool no_color) { double m[16]; extract_transposed(m_trsf, m); glPushMatrix(); glMultMatrixd(m); if(m_gl_list) { glCallList(m_gl_list); } else{ m_gl_list = glGenLists(1); glNewList(m_gl_list, GL_COMPILE_AND_EXECUTE); // draw a filled white rectangle glDisable(GL_POLYGON_OFFSET_FILL); glPolygonOffset(1.0, 0.0); glColor4ub(255, 255, 255, 120); // white wxGetApp().EnableBlend(); glDepthMask(0); gp_Pnt point[4]; GetFourCorners(point); glBegin(GL_TRIANGLES); glVertex3d(point[0].X(), point[0].Y(), point[0].Z()); glVertex3d(point[1].X(), point[1].Y(), point[1].Z()); glVertex3d(point[2].X(), point[2].Y(), point[2].Z()); glVertex3d(point[0].X(), point[0].Y(), point[0].Z()); glVertex3d(point[2].X(), point[2].Y(), point[2].Z()); glVertex3d(point[3].X(), point[3].Y(), point[3].Z()); glEnd(); wxGetApp().DisableBlend(); glDepthMask(1); // draw a black rectangle border glColor4ub(0, 0, 0, 255); // black glBegin(GL_LINE_STRIP); glVertex3d(point[0].X(), point[0].Y(), point[0].Z()); glVertex3d(point[1].X(), point[1].Y(), point[1].Z()); glVertex3d(point[2].X(), point[2].Y(), point[2].Z()); glVertex3d(point[3].X(), point[3].Y(), point[3].Z()); glVertex3d(point[0].X(), point[0].Y(), point[0].Z()); glEnd(); // draw the marks ( with their numbers ) std::list<RulerMark> marks; CalculateMarks(marks); for(std::list<RulerMark>::iterator It = marks.begin(); It != marks.end(); It++) { RulerMark& mark = *It; mark.glCommands(GetUnits()); } glEnable(GL_POLYGON_OFFSET_FILL); glEndList(); } glPopMatrix(); }
STDMETHODIMP CComDictionary::GetUnitStartPos(WORD UnitNo, LONG *result) { // TODO: Add your implementation code here *result = GetUnits()[UnitNo].m_StartCortegeNo; return S_OK; }
// электронные адреса типа www.medialingua.ru // ftp.medialingua.ru bool CGraphmatFile::DealAbbrigedInternetAddresses(size_t StartPos, size_t EndPos) { size_t i = StartPos; if ( (GetUnits()[i].GetTokenLength() != 3) || ( strncmp(GetUppercaseToken(i), "FTP", 3) && strncmp(GetUppercaseToken(i), "WWW", 3) ) ) return false; i++; if (i == EndPos) return false; if (!IsOneFullStop(i)) return false; for (; (i<EndPos) && ( HasDescr (i, OPun) || HasDescr (i, OLLE) || HasDescr (i, ODg) || HasDescr (i, ODgCh) ); i++); if (HasGrouped(StartPos,i)) return false; SetDes (StartPos, OElectAddr1); SetDes (i-1, OElectAddr2); SetState(StartPos,i,stGrouped); return true; };
void CGraphmatFile::DealNames (size_t LB, size_t HB) { for (size_t i = LB; i<HB; i++) { if (!flEOS && HasDescr(i,OUpLw) && !HasDescr(i,ONam)) SetDes (i,ONam); if(!GetUnits()[i].IsSoft()) flEOS = HasDescr(i,OEOS); } }
bool BattleObjects::TeamHasAbandondedBattle(int team) const { for (BattleObjects::Unit* unit : GetUnits()) if (unit->commander->GetTeam() == team && !unit->commander->HasAbandonedBattle()) return false; return true; }
void TowerDefenseInstanceScript::TowerDefenseMapInstanceScript::SpawnNextCreature(Creature* spawner) { WaveInfo* wave = GetWaveById(GetCurrentWaveId()); if(wave) wave->Spawn(GetUnits(), spawner); else sLog->outBasic("TowerDefense: Wave Id [%u] does not have correct loading data in the db. the core could not load the wave.", GetCurrentWaveId()); }
// DT1 - DT2 int CGraphmatFile::DealDates (size_t i,size_t HB) { // DD.MM.YY if ( (GetUnits()[i].GetTokenLength() != 2) && (GetUnits()[i].GetTokenLength() != 1)) return false; int day = GetUnits()[i].ToInt(); if ((day <1) || (day>31)) return false; size_t nt = i+1; if (nt == HB) return false; if ( !IsOneFullStop(nt) && !(GetUnits()[nt].GetToken()[0] == '/')) return false; nt++; if (nt == HB) return false; int month = GetUnits()[nt].ToInt(); if ((month <1) || (month>12)) return false; nt++; if (nt == HB) return false; if ( !IsOneFullStop(nt) && !(GetUnits()[nt].GetToken()[0] == '/')) return false; nt++; if (nt == HB) return false; int year = GetUnits()[nt].ToInt(); if ((year <1) || (year>2000)) return false; SetDes (i,ODate1); SetDes (nt, ODate2); SetState(i,nt+1,stGrouped); return true; }
// Convert a CPoint to a Unit CString CString COption::PointToDisplay(CDPoint a,BOOL horiz) { CString r; double Scale = GetUnits()==0 ? (float)PIXELSPERMM : ((float)PIXELSPERMM * 25.4f); double sx = a.x / Scale; double sy = a.y / Scale; if (horiz) { r.Format(_T("%.1lf"),sy,GetUnits()==0 ? _T("mm") : _T("\"")); } else { r.Format(_T("%.1lf"),sx,GetUnits()==0 ? _T("mm") : _T("\"")); } return r; }
void BattleSimulator::AddObserver(BattleObserver* observer) { _observers.insert(observer); for (BattleObjects::Unit* unit : GetUnits()) { observer->OnAddUnit(unit); observer->OnCommand(unit, 0); } }
int BattleObjects::CountInfantryInMelee() const { int result = 0; for (const Unit* unit : GetUnits()) if (unit->GetPlatformType() == BattleObjects::PlatformType::Infantry && unit->IsInMelee()) ++result; return result; }
QString Frequency::GetUnitString() const { switch(GetUnits()) { case Hz: return "Hz"; case kHz: return "kHz"; case MHz: return "MHz"; case GHz: return "GHz"; } return "Hz"; }
~DIALOG_EXPORT_3DFILE() { m_unitsOpt = GetUnits(); m_copy3DFilesOpt = GetCopyFilesOption(); m_config->Write( OPTKEY_OUTPUT_UNIT, m_unitsOpt ); m_config->Write( OPTKEY_3DFILES_OPT, m_copy3DFilesOpt ); m_config->Write( OPTKEY_USE_RELATIVE_PATHS, m_useRelativePathsOpt ); m_config->Write( OPTKEY_USE_PLAIN_PCB, m_usePlainPCBOpt ); m_config->Write( OPTKEY_VRML_REF_UNITS, m_VRML_RefUnitChoice->GetSelection() ); m_config->Write( OPTKEY_VRML_REF_X, m_VRML_Xref->GetValue() ); m_config->Write( OPTKEY_VRML_REF_Y, m_VRML_Yref->GetValue() ); };
bool CGraphmatFile :: FindKeySequence (const char* title, size_t i,size_t HB, size_t& GraLast) const { size_t k=0; bool OborotHasSpaceBefore = true; bool TextHasSpaceBefore = true; do { title ++; k++; if (k == GetUnits()[i].GetTokenLength()) { k =0; i++; }; bool ObororCharIsPunct = ispunct((unsigned char)*title) != 0; long space_size = strspn (title," "); title += space_size; OborotHasSpaceBefore = (space_size > 0) || ObororCharIsPunct; long j = PSoft(i, HB); TextHasSpaceBefore = (j > i) || HasDescr (i,OPun); i = j; } while ( *title && (i < HB) && !(GetUnits()[i].IsGrouped()) && IsSuperEqualChar ((unsigned char)*title,(unsigned char)GetUnits()[i].GetToken()[k], m_Language) && (OborotHasSpaceBefore == TextHasSpaceBefore) ); if (*title || k != 0) return false; GraLast = BSoft(i-1)+1; return true; }
/* Building units like "Bill J. Bush" */ bool CGraphmatFile::DealEnglishStyleFIO (size_t StartPos, size_t EndPos) { size_t i = StartPos; if (!GetUnits()[i].IsEnglishName()) return false; i = PSoft(i+1,EndPos); if ( (i == EndPos) || !( GetUnits()[i].GetTokenLength() == 1 && HasDescr (i, OLLE) ) ) return false; i = PSoft(i+1,EndPos); if ((i == EndPos) || !IsOneFullStop(i)) return false; i = PSoft(i+1,EndPos); if ((i == EndPos) || !HasDescr(i, OLLE)) return false; if (HasGrouped(StartPos,i+1)) return false; SetDes (StartPos, OFAM1); SetDes (i, OFAM2); SetState(StartPos,i+1,stGrouped); return true; };
void CWordPadApp::SaveOptions() { WriteProfileInt(szSection, szWordSel, m_bWordSel); WriteProfileInt(szSection, szUnits, GetUnits()); WriteProfileInt(szSection, szMaximized, m_bMaximized); WriteProfileBinary(szSection, szFrameRect, (BYTE*)&m_rectInitialFrame, sizeof(CRect)); WriteProfileBinary(szSection, szPageMargin, (BYTE*)&m_rectPageMargin, sizeof(CRect)); m_optionsText.SaveOptions(szTextSection); m_optionsRTF.SaveOptions(szRTFSection); m_optionsWord.SaveOptions(szWordSection); m_optionsWrite.SaveOptions(szWriteSection); m_optionsIP.SaveOptions(szIPSection); }
void NewSettings(char *name) { FreeVec(Units); FreeList(UnitList); globalprefs.ahigp_DebugLevel = AHI_DEBUG_NONE; globalprefs.ahigp_DisableSurround = FALSE; globalprefs.ahigp_DisableEcho = FALSE; globalprefs.ahigp_FastEcho = FALSE; globalprefs.ahigp_MaxCPU = (90 << 16) / 100; globalprefs.ahigp_ClipMasterVolume = FALSE; globalprefs.ahigp_AntiClickTime = 0; UnitList = GetUnits(name); Units = List2Array((struct List *) UnitList); NewUnit(0); }
///////////////////////////////////////////////////////////////////////////// // GetField() // Return requested field as a double (function return value) or as a text // string (*pstr) in the units requested (eUnit). Set 'bStrUnits' to true // to have units appended to text string. // // Note: numeric return values are cached; asking for the same field more // than once incurs minimal overhead. double cTle::GetField(eField fld, eUnits units, /* = U_NATIVE */ string *pstr /* = NULL */, bool bStrUnits /* = false */) const { assert((FLD_FIRST <= fld) && (fld < FLD_LAST)); assert((U_FIRST <= units) && (units < U_LAST)); if (pstr) { // Return requested field in string form. *pstr = m_Field[fld]; if (bStrUnits) { *pstr += GetUnits(fld); } TrimLeft (*pstr); TrimRight(*pstr); return 0.0; } else { // Return requested field in floating-point form. // Return cache contents if it exists, else populate cache FldKey key = Key(units, fld); if (m_mapCache.find(key) == m_mapCache.end()) { // Value not in cache; add it double valNative = atof(m_Field[fld].c_str()); double valConv = ConvertUnits(valNative, fld, units); m_mapCache[key] = valConv; return valConv; } else { // return cached value return m_mapCache[key]; } } }
// пункты перечисления типа (1) или [1] int CGraphmatFile::DealBulletsWithTwoBrackets (size_t StartPos, size_t EndPos) { size_t i = StartPos; if ( !HasDescr(i, OOpn) ) return false; if ( HasDescr(i, OBullet) ) return false; size_t nt = PSpace(i+1, EndPos); if (nt == EndPos) return false; // проверяем, является ли данная графема перечислителем if (!IsBulletWord(nt) ) return false; size_t BulletWordNo = nt; // удостоверяемся, что данная графема не вошла в графематические группы size_t nh = (i>0) ? BSpace(i-1) : 0; // перед перечислителем должен стоять конец строки if ( !GetUnits()[nh].IsEOLN() && (nh > 0)) return false; if (nt + 1 >= EndPos) return false; nt = PSpace(nt+1,EndPos); // после перечислителя должно стоять либо закрывающая скобка, либо точка if (nt == EndPos) return false; if ( !HasDescr(nt, OCls) ) return false; if (HasGrouped(StartPos,nt+1)) return false; SetDes (StartPos, OBullet); if (!HasDescr (StartPos, OPar)) SetDes(StartPos, OPar); SetState(StartPos,nt+1,stGrouped); return true; };