bool IntelKernel::loadBootImage() { MultibootModule *mod; BootImage *image; Arch::Memory virt(0, m_memory); Arch::Memory::Range range; Address vaddr; // Startup boot modules for (Size n = 0; n < multibootInfo.modsCount; n++) { // Map MultibootModule struct // TODO: too many arguments. Make an easier wrapper. vaddr = virt.findFree(PAGESIZE, Memory::KernelPrivate); virt.map(multibootInfo.modsAddress, vaddr, Arch::Memory::Present | Arch::Memory::Readable); mod = (MultibootModule *)(vaddr + multibootInfo.modsAddress % PAGESIZE); mod += n; vaddr = virt.findFree(PAGESIZE, Memory::KernelPrivate), virt.map(mod->string, vaddr, Arch::Memory::Present | Arch::Memory::Readable); String str = (char *) (vaddr + mod->string % PAGESIZE); // Mark its memory used for (Address a = mod->modStart; a < mod->modEnd; a += PAGESIZE) m_memory->allocate(a); // Is this a BootImage? if (str.match("*.img.gz")) { // Map the BootImage into our address space range.phys = mod->modStart; range.size = mod->modEnd - mod->modStart; range.virt = virt.findFree(range.size, Memory::KernelPrivate); range.access = Arch::Memory::Present | Arch::Memory::Readable; virt.mapRange(&range); image = (BootImage *) range.virt; // Verify this is a correct BootImage if (image->magic[0] == BOOTIMAGE_MAGIC0 && image->magic[1] == BOOTIMAGE_MAGIC1 && image->layoutRevision == BOOTIMAGE_REVISION) { m_bootImageAddress = mod->modStart; m_bootImageSize = mod->modEnd - mod->modStart; // Loop BootPrograms for (Size i = 0; i < image->symbolTableCount; i++) loadBootProcess(image, mod->modStart, i); } return true; } } return false; }
void View::pdraw(QPainter& p, const QRect& r) { //printf("View::pdraw virt:%d x:%d width:%d y:%d height:%d\n", virt(), r.x(), r.width(), r.y(), r.height()); if (virt()) { setPainter(p); int x = r.x(); int y = r.y(); int w = r.width(); int h = r.height(); if (xmag <= 0) { // TODO These adjustments are required, otherwise gaps. Tried, unable to remove them for now. p4.0.30 x -= 1; w += 2; //x = (x + xpos + rmapx(xorg)) * (-xmag); x = lrint((double(x + xpos) + rmapx_f(xorg)) * double(-xmag)); w = w * (-xmag); } else { //x = (x + xpos + rmapx(xorg)) / xmag; x = lrint((double(x + xpos) + rmapx_f(xorg)) / double(xmag)); //w = (w + xmag - 1) / xmag; w = lrint(double(w) / double(xmag)); x -= 1; w += 2; } if (ymag <= 0) { y -= 1; h += 2; //y = (y + ypos + rmapy(yorg)) * (-ymag); y = lrint((double(y + ypos) + rmapy_f(yorg)) * double(-ymag)); h = h * (-ymag); } else { //y = (y + ypos + rmapy(yorg)) / ymag; y = lrint((double(y + ypos) + rmapy_f(yorg)) / double(ymag)); //h = (h + ymag - 1) / ymag; h = lrint(double(h) / double(ymag)); y -= 1; h += 2; } if (x < 0) x = 0; if (y < 0) y = 0; draw(p, QRect(x, y, w, h)); } else draw(p, r); }
void call(const std::string &msg = "") { print.print_member_call(std::cout, "call", {}); virt(msg); }
virtual ~Base() { print.print_destructor(std::cout); virt(); }
Base(const Base &rhs) : print{rhs.print} { print.print_copy_constructor(std::cout); virt(); }
Base(const std::string &class_name = "Base") : print{class_name, sp_1, sp_2} { print.print_constructor(std::cout); virt(); }
virtual ~Deriv() { print.print_destructor(std::cout); virt(); Base1::call(std::string("called from ~") + print.get_name() + "()"); }
Deriv(const Deriv &rhs) : Base1{rhs}, print{rhs.print} { print.print_copy_constructor(std::cout); virt(); }
Deriv(const std::string &class_name = "Deriv", Args&&... args) : Base1{std::forward<Args>(args)...}, print{class_name, sp_1, sp_2} { print.print_constructor(std::cout); virt(); }
void EventCanvas::viewMousePressEvent(QMouseEvent* event)/*{{{*/ { ///keyState = event->state(); _keyState = ((QInputEvent*) event)->modifiers(); _button = event->button(); //printf("viewMousePressEvent buttons:%x mods:%x button:%x\n", (int)event->buttons(), (int)keyState, event->button()); // special events if right button is clicked while operations // like moving or drawing lasso is performed. if (event->buttons() & Qt::RightButton & ~(event->button())) { //printf("viewMousePressEvent special buttons:%x mods:%x button:%x\n", (int)event->buttons(), (int)keyState, event->button()); switch (_drag) { case DRAG_LASSO: _drag = DRAG_OFF; redraw(); return; case DRAG_MOVE: _drag = DRAG_OFF; endMoveItems(_start, MOVE_MOVE, 0); return; default: break; } } // ignore event if (another) button is already active: if (event->buttons() & (Qt::LeftButton | Qt::RightButton | Qt::MidButton) & ~(event->button())) { //printf("viewMousePressEvent ignoring buttons:%x mods:%x button:%x\n", (int)event->buttons(), (int)keyState, event->button()); return; } bool shift = _keyState & Qt::ShiftModifier; bool alt = _keyState & Qt::AltModifier; bool ctrl = _keyState & Qt::ControlModifier; _start = event->pos(); //--------------------------------------------------- // set curItem to item mouse is pointing // (if any) //--------------------------------------------------- CItemList list = _items; if(multiPartSelectionAction && !multiPartSelectionAction->isChecked()) list = getItemlistForCurrentPart(); if (virt()) { _curItem = list.find(_start);//_items.find(_start); } else { _curItem = 0; //selectAtTick(_start.x()); iCItem ius; bool usfound = false; for (iCItem i = list.begin(); i != list.end(); ++i) { MidiTrack* mtrack = (MidiTrack*)i->second->part()->track(); int sy = _start.y(); int p = y2pitch(sy); if(editor->isGlobalEdit()) p += mtrack->getTransposition(); int p2 = pitch2y(p); QPoint lpos(_start.x(), p2); QRect box = i->second->bbox(); int x = rmapxDev(box.x()); int y = rmapyDev(box.y()); int w = rmapxDev(box.width()); int h = rmapyDev(box.height()); QRect r(x, y, w, h); r.translate(i->second->pos().x(), i->second->pos().y()); if(r.contains(lpos)) { if (i->second->isSelected()) { _curItem = i->second; break; } else if (!usfound) { ius = i; usfound = true; } } } if (!_curItem && usfound) _curItem = ius->second; } if(editor->isGlobalEdit() && _curItem) { populateMultiSelect(_curItem); } if (_curItem && (event->button() == Qt::MidButton)) { if (!_curItem->isSelected()) { selectItem(_curItem, true); updateSelection(); redraw(); } startDrag(_curItem, shift); } else if (event->button() == Qt::RightButton) { if (_curItem) { if (shift) { _drag = DRAG_RESIZE; setCursor(); int dx = _start.x() - _curItem->x(); _curItem->setWidth(dx); _start.setX(_curItem->x()); deselectAll(); selectItem(_curItem, true); updateSelection(); redraw(); } else { _itemPopupMenu = genItemPopup(_curItem); if (_itemPopupMenu) { QAction *act = _itemPopupMenu->exec(QCursor::pos()); if (act) itemPopup(_curItem, act->data().toInt(), _start); delete _itemPopupMenu; } } } else { _canvasPopupMenu = genCanvasPopup(true); if (_canvasPopupMenu) { QAction *act = _canvasPopupMenu->exec(QCursor::pos(), 0); if (act) { int actnum = act->data().toInt(); canvasPopup(actnum); if(actnum >= 20) //Nome of the tools have a higher number than 9 { editor->updateCanvas(); los->arranger->updateCanvas(); } } delete _canvasPopupMenu; } } } else if (event->button() == Qt::LeftButton) { switch (_tool) { case PointerTool: if (_curItem) { /*if (_curItem->part() != _curPart) { _curPart = _curItem->part(); _curPartId = _curPart->sn(); curPartChanged(); }*/ itemPressed(_curItem); if (shift) _drag = DRAG_COPY_START; else if (alt) { _drag = DRAG_CLONE_START; } else if (ctrl) { //Select all on the same pitch (e.g. same y-value) deselectAll(); //printf("Yes, ctrl and press\n"); for (iCItem i = _items.begin(); i != _items.end(); ++i) { if (i->second->y() == _curItem->y()) selectItem(i->second, true); } updateSelection(); redraw(); } else _drag = DRAG_MOVE_START; } else _drag = DRAG_LASSO_START; setCursor(); break; case RubberTool: deleteItem(_start); _drag = DRAG_DELETE; setCursor(); break; case PencilTool: if (_curItem) { _drag = DRAG_RESIZE; setCursor(); int dx = _start.x() - _curItem->x(); _curItem->setWidth(dx); _start.setX(_curItem->x()); } else { _drag = DRAG_NEW; setCursor(); _curItem = newItem(_start, event->modifiers()); if (_curItem) _items.add(_curItem); else { _drag = DRAG_OFF; setCursor(); } } deselectAll(); if (_curItem) { selectItem(_curItem, true); // Play the note itemPressed(_curItem); } updateSelection(); redraw(); break; default: break; } } mousePress(event); }/*}}}*/
Derived() { println("Derived::Derived()"); virt(); }
Base() { println("Base::Base()"); virt(); }