main_window::main_window (QWidget *parent) : QMainWindow(parent), ui(new Ui::main_window) { ui->setupUi(this); ui->statusBar->showMessage (trUtf8 ("Выберите функцию")); setWindowTitle (trUtf8 ("Метод наименьших квадратов")); ui->function_menu->setTitle (trUtf8 ("Функции")); ui->menuView->setTitle (trUtf8 ("Показать")); ui->menu_func->setText (trUtf8 ("Только функцию")); ui->menu_approx->setText (trUtf8 ("Только приближение")); ui->menu_both->setText (trUtf8 ("Функцию и приближение")); ui->menu_mesh->setText (trUtf8 ("Сетку")); ui->threads_label->setText (trUtf8 ("Число потоков:")); QColor clearColor = Qt::black; browser = new GLWidget(this); browser->setClearColor(clearColor); connect (ui->sin, SIGNAL (triggered ()), browser, SLOT (set_sin ())); connect (ui->linear, SIGNAL (triggered ()), browser, SLOT (set_linear ())); connect (ui->x2y2, SIGNAL (triggered ()), browser, SLOT (set_x2y2 ())); connect (ui->x2x, SIGNAL (triggered ()), browser, SLOT (set_x2x ())); connect (ui->menu_mesh, SIGNAL (triggered ()), browser, SLOT (mesh_draw_changed ())); connect (ui->menu_func, SIGNAL (triggered ()), browser, SLOT (only_func ())); connect (ui->menu_approx, SIGNAL (triggered ()), browser, SLOT (only_approx ())); connect (ui->menu_both, SIGNAL (triggered ()), browser, SLOT (draw_both ())); connect (browser, SIGNAL (sendmsg (QString)), ui->statusBar, SLOT (showMessage (QString))); ui->centralWidget->layout ()->addWidget (browser); browser->setFocus (); old_n1 = ui->n1_box->value (); old_n2 = ui->n2_box->value (); browser->update_approximation (); }
int main(int argc, char **argv) { unsigned long long vaddr; char *endp; addrxlat_ctx *ctx; addrxlat_pgt_t *pgt; int opt; addrxlat_status status; unsigned long refcnt; int rc; pgt = NULL; ctx = NULL; pgt = addrxlat_pgt_new(); if (!pgt) { perror("Cannot initialize page table translation"); rc = TEST_ERR; goto out; } while ((opt = getopt_long(argc, argv, "he:f:l:pr:", opts, NULL)) != -1) { switch (opt) { case 'f': rc = set_paging_form(optarg); if (rc != TEST_OK) return rc; break; case 'r': rc = set_root(optarg, pgt); if (rc != TEST_OK) return rc; break; case 'e': rc = add_entry(optarg); if (rc != TEST_OK) return rc; break; case 'l': rc = set_linear(optarg); if (rc != TEST_OK) return rc; break; case 'p': xlatdef.method = ADDRXLAT_PGT; xlatdef.pgt = pgt; break; case 'h': default: usage(argv[0]); rc = (opt == 'h') ? TEST_OK : TEST_ERR; goto out; } } if (argc - optind != 1 || !*argv[optind]) { fprintf(stderr, "Usage: %s <addr>\n", argv[0]); return TEST_ERR; } vaddr = strtoull(argv[optind], &endp, 0); if (*endp) { fprintf(stderr, "Invalid address: %s\n", argv[optind]); return TEST_ERR; } ctx = addrxlat_new(); if (!ctx) { perror("Cannot initialize address translation context"); rc = TEST_ERR; goto out; } status = addrxlat_pgt_set_form(pgt, &paging_form); if (status != addrxlat_ok) { fprintf(stderr, "Cannot set paging form\n"); rc = TEST_ERR; goto out; } addrxlat_cb_read32(ctx, read32); addrxlat_cb_read64(ctx, read64); rc = do_xlat(ctx, vaddr); out: if (pgt && (refcnt = addrxlat_pgt_decref(pgt)) != 0) fprintf(stderr, "WARNING: Leaked %lu pgt references\n", refcnt); if (ctx && (refcnt = addrxlat_decref(ctx)) != 0) fprintf(stderr, "WARNING: Leaked %lu addrxlat references\n", refcnt); return rc; }
void TexViewerModule::draw(Box2f viewport, Box2f screen_viewport, float scale, unsigned int recurse) { glMatrixMode(GL_PROJECTION); glPushMatrix(); glBoxToBox(viewport, screen_viewport); Vector2f s = size(); glBegin(GL_QUADS); glColor3f(0.0f, 0.0f, 0.0f); glVertex2f(-0.5f*s.x, -0.5f*s.y); glVertex2f( 0.5f*s.x, -0.5f*s.y); glVertex2f( 0.5f*s.x, 0.5f*s.y); glVertex2f(-0.5f*s.x, 0.5f*s.y); glEnd(); if (tex_out().tex != 0) { glDisable(GL_BLEND); glUseProgramObjectARB(scale_bias_shader->handle); glUniform1fARB(glGetUniformLocationARB(scale_bias_shader->handle, "scale"), 1.0f); glUniform1fARB(glGetUniformLocationARB(scale_bias_shader->handle, "bias"), 0.5f); glColor3f(1.0f, 1.0f, 1.0f); glEnable(GL_TEXTURE_RECTANGLE_ARB); glBindTexture(GL_TEXTURE_RECTANGLE_ARB, tex_out().tex); #ifdef ATI_HACK set_nearest(); #else set_linear(); //no ATI_HACK #endif float px_size = 2.0f / Graphics::screen_y * viewport.size().x / screen_viewport.size().x * tex_out().height / size().y; glBegin(GL_QUADS); glColor3f(0.0f, 0.0f, 0.0f); glTexCoord2f(0-0.5f * px_size, 0-0.5f * px_size); glMultiTexCoord2f(GL_TEXTURE1_ARB, 0+0.5f * px_size, 0+0.5f * px_size); if (rotate) { glVertex2f(-0.5f*s.x, -0.5f*s.y); } else { glVertex2f(-0.5f*s.x, 0.5f*s.y); } glTexCoord2f(tex_out().width-0.5f * px_size, 0-0.5f * px_size); glMultiTexCoord2f(GL_TEXTURE1_ARB, tex_out().width+0.5f * px_size, 0+0.5f * px_size); if (rotate) { glVertex2f(-0.5f*s.x, 0.5f*s.y); } else { glVertex2f( 0.5f*s.x, 0.5f*s.y); } glTexCoord2f(tex_out().width-0.5f * px_size, tex_out().height-0.5f * px_size); glMultiTexCoord2f(GL_TEXTURE1_ARB, tex_out().width+0.5f * px_size, tex_out().height+0.5f * px_size); if (rotate) { glVertex2f( 0.5f*s.x, 0.5f*s.y); } else { glVertex2f( 0.5f*s.x, -0.5f*s.y); } glTexCoord2f(0-0.5f * px_size, tex_out().height-0.5f * px_size); glMultiTexCoord2f(GL_TEXTURE1_ARB, 0+0.5f * px_size, tex_out().height+0.5f * px_size); if (rotate) { glVertex2f( 0.5f*s.x, -0.5f*s.y); } else { glVertex2f(-0.5f*s.x, -0.5f*s.y); } glEnd(); glBindTexture(GL_TEXTURE_RECTANGLE_ARB, 0); glDisable(GL_TEXTURE_RECTANGLE_ARB); glUseProgramObjectARB(0); glEnable(GL_BLEND); } else { glBegin(GL_LINES); glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(-0.4f*s.x, -0.4f*s.y); glVertex2f( 0.4f*s.x, 0.4f*s.y); glVertex2f( 0.4f*s.x, -0.4f*s.y); glVertex2f(-0.4f*s.x, 0.4f*s.y); glEnd(); } glBegin(GL_LINE_LOOP); glColor3f(1.0f, 1.0f, 1.0f); glVertex2f(-0.5f*s.x, -0.5f*s.y); glVertex2f( 0.5f*s.x, -0.5f*s.y); glVertex2f( 0.5f*s.x, 0.5f*s.y); glVertex2f(-0.5f*s.x, 0.5f*s.y); glEnd(); glPopMatrix(); glMatrixMode(GL_MODELVIEW); Graphics::gl_errors("TexViewer::draw"); }
int main(int argc, char **argv) { unsigned long long vaddr; char *endp; addrxlat_ctx_t *ctx; addrxlat_cb_t cb = { .read32 = read32, .read64 = read64, .read_caps = (ADDRXLAT_CAPS(ADDRXLAT_MACHPHYSADDR) | ADDRXLAT_CAPS(ADDRXLAT_KVADDR)) }; addrxlat_meth_t pgt, linear, lookup, memarr, *meth; int opt; unsigned long refcnt; int rc; ctx = NULL; meth = NULL; pgt.kind = ADDRXLAT_PGT; pgt.target_as = ADDRXLAT_MACHPHYSADDR; pgt.param.pgt.root.as = ADDRXLAT_NOADDR; pgt.param.pgt.root.addr = 0; linear.kind = ADDRXLAT_LINEAR; linear.target_as = ADDRXLAT_MACHPHYSADDR; linear.param.linear.off = 0; lookup.kind = ADDRXLAT_LOOKUP; lookup.target_as = ADDRXLAT_MACHPHYSADDR; lookup.param.lookup.endoff = 0; memarr.kind = ADDRXLAT_MEMARR; memarr.target_as = ADDRXLAT_MACHPHYSADDR; memarr.param.memarr.base.as = ADDRXLAT_NOADDR; while ((opt = getopt_long(argc, argv, "he:f:l:m:pr:t:", opts, NULL)) != -1) { switch (opt) { case 'f': meth = &pgt; rc = set_paging_form(&meth->param.pgt.pf, optarg); if (rc != TEST_OK) return rc; break; case 'r': meth = &pgt; rc = set_root(&meth->param.pgt.root, optarg); if (rc != TEST_OK) return rc; break; case 'e': rc = add_entry(optarg); if (rc != TEST_OK) return rc; break; case 'l': meth = &linear; rc = set_linear(&meth->param.linear.off, optarg); if (rc != TEST_OK) return rc; break; case 'm': meth = &memarr; rc = set_memarr(&meth->param.memarr, optarg); if (rc != TEST_OK) return rc; break; case 'p': meth = &pgt; break; case 't': meth = &lookup; rc = set_lookup(&meth->param.lookup.endoff, optarg); if (rc != TEST_OK) return rc; break; case 'h': default: usage(argv[0]); rc = (opt == 'h') ? TEST_OK : TEST_ERR; goto out; } } if (meth == NULL) { fputs("No translation method specified\n", stderr); return TEST_ERR; } if (argc - optind != 1 || !*argv[optind]) { fprintf(stderr, "Usage: %s <addr>\n", argv[0]); return TEST_ERR; } vaddr = strtoull(argv[optind], &endp, 0); if (*endp) { fprintf(stderr, "Invalid address: %s\n", argv[optind]); return TEST_ERR; } lookup.param.lookup.nelem = nentries; lookup.param.lookup.tbl = entries; ctx = addrxlat_ctx_new(); if (!ctx) { perror("Cannot initialize address translation context"); rc = TEST_ERR; goto out; } cb.data = ctx; addrxlat_ctx_set_cb(ctx, &cb); rc = do_xlat(ctx, meth, vaddr); out: if (ctx && (refcnt = addrxlat_ctx_decref(ctx)) != 0) fprintf(stderr, "WARNING: Leaked %lu addrxlat references\n", refcnt); return rc; }