void TTraction::Load( cParser *parser, glm::dvec3 const &pOrigin ) { parser->getTokens( 4 ); *parser >> asPowerSupplyName >> NominalVoltage >> MaxCurrent >> fResistivity; if( fResistivity == 0.01f ) { // tyle jest w sceneriach [om/km] // taka sensowniejsza wartość za http://www.ikolej.pl/fileadmin/user_upload/Seminaria_IK/13_05_07_Prezentacja_Kruczek.pdf fResistivity = 0.075f; } fResistivity *= 0.001f; // teraz [om/m] // Ra 2014-02: a tutaj damy symbol sieci i jej budowę, np.: // SKB70-C, CuCd70-2C, KB95-2C, C95-C, C95-2C, YC95-2C, YpC95-2C, YC120-2C // YpC120-2C, YzC120-2C, YwsC120-2C, YC150-C150, YC150-2C150, C150-C150 // C120-2C, 2C120-2C, 2C120-2C-1, 2C120-2C-2, 2C120-2C-3, 2C120-2C-4 auto const material = parser->getToken<std::string>(); // 1=miedziana, rysuje się na zielono albo czerwono // 2=aluminiowa, rysuje się na czarno if( material == "none" ) { Material = 0; } else if( material == "al" ) { Material = 2; } else { Material = 1; } parser->getTokens( 2 ); *parser >> WireThickness >> DamageFlag; pPoint1 = LoadPoint( *parser ) + pOrigin; pPoint2 = LoadPoint( *parser ) + pOrigin; pPoint3 = LoadPoint( *parser ) + pOrigin; pPoint4 = LoadPoint( *parser ) + pOrigin; auto const minheight { parser->getToken<double>() }; fHeightDifference = ( pPoint3.y - pPoint1.y + pPoint4.y - pPoint2.y ) * 0.5 - minheight; auto const segmentlength { parser->getToken<double>() }; iNumSections = ( segmentlength ? glm::length( ( pPoint1 - pPoint2 ) ) / segmentlength : 0 ); parser->getTokens( 2 ); *parser >> Wires >> WireOffset; m_visible = ( parser->getToken<std::string>() == "vis" ); std::string token { parser->getToken<std::string>() }; if( token == "parallel" ) { // jawne wskazanie innego przęsła, na które może przestawić się pantograf parser->getTokens(); *parser >> asParallel; }
void PolarShapeEditWidget::SetPolarShape(const PolarShape &_shape) { shape = _shape; for (unsigned i = 0; i < ARRAY_SIZE(points); ++i) LoadPoint(points[i], shape[i]); }
bool SIFSpritesSect::LoadFrame(SIFFrame *frame, int ndirs, \ const uint8_t **data, const uint8_t *data_end) { // sets defaults for un-specified/default fields memset(frame, 0, sizeof(SIFFrame)); for(int d=0;d<ndirs;d++) { SIFDir *dir = &frame->dir[d]; LoadPoint(&dir->sheet_offset, data, data_end); int t; for(;;) { t = read_U8(data, data_end); if (t == S_DIR_END) break; switch(t) { case S_DIR_DRAW_POINT: LoadPoint(&dir->drawpoint, data, data_end); break; case S_DIR_ACTION_POINT: LoadPoint(&dir->actionpoint, data, data_end); break; case S_DIR_ACTION_POINT_2: LoadPoint(&dir->actionpoint2, data, data_end); break; case S_DIR_PF_BBOX: LoadRect(&dir->pf_bbox, data, data_end); break; default: NX_LOG("SIFSpriteSect::LoadFrame: encountered unknown optional field type %d\n", t); return 1; } } } return 0; }
bool SIFSpritesSect::Decode(const uint8_t *data, int datalen, \ SIFSprite *sprites, int *nsprites_out, int maxsprites) { const uint8_t *data_end = data + (datalen - 1); int i, f, nsprites; nsprites = read_U16(&data, data_end); if (nsprites_out) *nsprites_out = nsprites; if (nsprites >= maxsprites) { NX_ERR("SIFSpritesSect::Decode: too many sprites in file (nsprites=%d, maxsprites=%d)\n", nsprites, maxsprites); return 1; } NX_LOG("SIFSpritesSect: loading %d sprites\n", nsprites); for(i=0;i<nsprites;i++) { if (data > data_end) { NX_ERR("SIFSpritesSect::Decode: section corrupt: overran end of data\n"); return 1; } // read sprite-level fields sprites[i].w = read_U8(&data, data_end); sprites[i].h = read_U8(&data, data_end); sprites[i].spritesheet = read_U8(&data, data_end); sprites[i].nframes = read_U8(&data, data_end); sprites[i].ndirs = read_U8(&data, data_end); if (sprites[i].ndirs > SIF_MAX_DIRS) { NX_ERR("SIFSpritesSect::Decode: SIF_MAX_DIRS exceeded on sprite %d (ndirs=%d)\n", i, sprites[i].ndirs); return 1; } LoadRect(&sprites[i].bbox, &data, data_end); LoadRect(&sprites[i].solidbox, &data, data_end); LoadPoint(&sprites[i].spawn_point, &data, data_end); LoadPointList(&sprites[i].block_l, &data, data_end); LoadPointList(&sprites[i].block_r, &data, data_end); LoadPointList(&sprites[i].block_u, &data, data_end); LoadPointList(&sprites[i].block_d, &data, data_end); // malloc enough space to hold the specified number // of apple fritters, i mean, frames. sprites[i].frame = (SIFFrame *)malloc(sizeof(SIFFrame) * sprites[i].nframes); // then load all frames for(f=0;f<sprites[i].nframes;f++) { if (LoadFrame(&sprites[i].frame[f], sprites[i].ndirs, &data, data_end)) return 1; } } return 0; }
void PolarShapeEditWidget::Prepare(ContainerWindow &parent, const PixelRect &_rc) { PanelWidget::Prepare(parent, _rc); const DialogLook &look = UIGlobals::GetDialogLook(); ContainerWindow &panel = (ContainerWindow &)GetWindow(); const unsigned width = _rc.right - _rc.left; const unsigned height = _rc.bottom - _rc.top; const TCHAR *v_text = _("Polar V"); const TCHAR *w_text = _("Polar W"); const unsigned row_height = height / 2; const unsigned label_width = Layout::Scale(8) + std::max(look.text_font->TextSize(v_text).cx, look.text_font->TextSize(v_text).cx); const UPixelScalar edit_width = (width - label_width) / ARRAY_SIZE(points); WindowStyle style; style.TabStop(); PixelRect label_rc(0, 0, label_width, row_height); v_label = new WndFrame(panel, look, label_rc); v_label->SetText(v_text); PixelRect rc; rc.left = label_width; rc.top = 0; rc.right = rc.left + edit_width; rc.bottom = row_height; for (unsigned i = 0; i < ARRAY_SIZE(points); ++i, rc.left += edit_width, rc.right += edit_width) { points[i].v = new WndProperty(panel, look, _T(""), rc, 0, style); DataFieldFloat *df = new DataFieldFloat(_T("%.0f"), _T("%.0f %s"), fixed(0), fixed(300), fixed(0), fixed(1), false, NULL); points[i].v->SetDataField(df); } label_rc.top += row_height; label_rc.bottom += row_height; w_label = new WndFrame(panel, look, label_rc); w_label->SetText(w_text); rc.left = label_width; rc.top = row_height; rc.right = rc.left + edit_width; rc.bottom = height; fixed step = fixed(0.05), min = fixed(-10); switch (Units::current.vertical_speed_unit) { case Unit::FEET_PER_MINUTE: step = fixed(10); min = fixed(-2000); break; case Unit::KNOTS: step = fixed(0.1); min = fixed(-20); break; default: break; } for (unsigned i = 0; i < ARRAY_SIZE(points); ++i, rc.left += edit_width, rc.right += edit_width) { points[i].w = new WndProperty(panel, look, _T(""), rc, 0, style); DataFieldFloat *df = new DataFieldFloat(_T("%.2f"), _T("%.2f %s"), min, fixed(0), fixed(0), step, false, NULL); points[i].w->SetDataField(df); } for (unsigned i = 0; i < ARRAY_SIZE(points); ++i) LoadPoint(points[i], shape[i]); }
BOOL plResponderWaitProc::DlgProc(TimeValue t, IParamMap2 *pm, HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { fhDlg = hDlg; fWaitPB = pm->GetParamBlock(); ResponderWait::FixupWaitBlock(fWaitPB); IParamBlock2 *pb = GetCmdParams(fCurCmd); plResponderCmd *cmd = plResponderCmd::Find(pb); pm->Enable(kWaitMe, cmd->IsWaitable(pb)); LoadWho(); LoadPoint(); return TRUE; } case WM_CUSTEDIT_ENTER: if (wParam == IDC_MARKER_EDIT) { ICustEdit *edit = GetICustEdit((HWND)lParam); char buf[256]; edit->GetText(buf, sizeof(buf)); fWaitPB->SetValue(kWaitPoint, 0, buf); return TRUE; } break; case WM_COMMAND: { int code = HIWORD(wParam); int id = LOWORD(wParam); if (id == IDC_CHECK_WAIT && code == BN_CLICKED) { BOOL checked = (IsDlgButtonChecked(hDlg, IDC_CHECK_WAIT) == BST_CHECKED); if (!checked) { fWaitPB->SetValue(kWaitWho, 0, -1); fWaitPB->SetValue(kWaitPoint, 0, ""); LoadPoint(); HWND hWho = GetDlgItem(hDlg, IDC_WAIT_WHO); EnableWindow(hWho, FALSE); ComboBox_ResetContent(hWho); } else { LoadWho(true); LoadPoint(); } return TRUE; } else if (id == IDC_WAIT_WHO && code == CBN_SELCHANGE) { HWND hWho = (HWND)lParam; int who = ComboBox_GetCurSel(hWho); int idx = ComboBox_GetItemData(hWho, who); fWaitPB->SetValue(kWaitWho, 0, idx); LoadPoint(); return TRUE; } else if (id == IDC_RADIO_FINISH && code == BN_CLICKED) { fWaitPB->SetValue(kWaitPoint, 0, ""); LoadPoint(); return TRUE; } else if (id == IDC_RADIO_POINT && code == BN_CLICKED) { LoadPoint(true); return TRUE; } else if (id == IDC_WAIT_POINT && code == CBN_SELCHANGE) { HWND hPoint = (HWND)lParam; if (ComboBox_GetCurSel(hPoint) != CB_ERR) { char buf[256]; ComboBox_GetText(hPoint, buf, sizeof(buf)); fWaitPB->SetValue(kWaitPoint, 0, buf); } return TRUE; } break; } } return FALSE; }