void wxDynamicSashWindowLeaf::OnLeave(wxMouseEvent &WXUNUSED(event)) { wxCursor cursor(wxCURSOR_ARROW); m_impl->m_container->SetCursor(cursor); }
Qt::CursorShape CursorShapeArea::cursorShape() const { return cursor().shape(); }
void dprints(bc *bc, char *s) { char *p,ch; static char escape=0; int i; static int escapedata[20],ecount; cursor(bc, 0); p=s; ecount=escape=0; while((ch=*p++)) { if(escape) { if(ch>='0' && ch<='9') { escapedata[ecount]*=10; escapedata[ecount]+=ch-'0'; } else if(ch==';') { ++ecount; escapedata[ecount]=0; } else { escape=0; switch(ch) { case 'k': i=bc->txpos; while(i<bc->txsize) drawcharxy(bc, i++, bc->typos,' '); break; case 'x': bc->txpos=escapedata[0]; if(bc->txpos<=0) bc->txpos=0; if(bc->txpos>=bc->txsize) bc->txpos=bc->txsize-1; break; case 'y': bc->typos = escapedata[0]; if(bc->typos<0) bc->typos=0; if(bc->typos>=bc->tysize) bc->typos=bc->tysize-1; break; } } continue; } switch(ch) { case '\r': bc->txpos=0; break; case '\n': newline(bc); break; case '\t': while(bc->txpos&7) drawcharxy(bc, bc->txpos++,bc->typos,' '); break; case 8: if(bc->txpos) drawcharxy(bc, --bc->txpos,bc->typos,' '); break; case 0x1b: ecount=0; escapedata[ecount]=0; escape=1; break; default: drawcharxy(bc, bc->txpos++,bc->typos,ch); break; } if(bc->txpos >= bc->txsize) newline(bc); } cursor(bc, 1); update(bc); }
cursor get_cursor() const { return cursor(c.get_cursor(), sel); }
void bt459_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, u8 *pixel_data) { // initialise the blink timer if (m_blink_start > screen.frame_number()) m_blink_start = screen.frame_number(); // compute the blink state according to the programmed duty cycle const bool blink_state = ((screen.frame_number() - m_blink_start) & ( (m_command_0 & CR0302) == CR0302_1616 ? 0x10 : (m_command_0 & CR0302) == CR0302_3232 ? 0x20 : (m_command_0 & CR0302) == CR0302_6464 ? 0x40 : 0x30)) == 0; // compute the pixel mask from the pixel read mask and blink mask/state const u8 pixel_mask = m_pixel_read_mask & (blink_state ? 0xffU : ~m_pixel_blink_mask); // draw visible pixel data switch (m_command_0 & CR0100) { case CR0100_1BPP: for (int y = screen.visible_area().min_y; y <= screen.visible_area().max_y; y++) for (int x = screen.visible_area().min_x; x <= screen.visible_area().max_x; x += 8) { u8 data = *pixel_data++; bitmap.pix(y, x + 7) = get_rgb(data & 0x1, pixel_mask); data >>= 1; bitmap.pix(y, x + 6) = get_rgb(data & 0x1, pixel_mask); data >>= 1; bitmap.pix(y, x + 5) = get_rgb(data & 0x1, pixel_mask); data >>= 1; bitmap.pix(y, x + 4) = get_rgb(data & 0x1, pixel_mask); data >>= 1; bitmap.pix(y, x + 3) = get_rgb(data & 0x1, pixel_mask); data >>= 1; bitmap.pix(y, x + 2) = get_rgb(data & 0x1, pixel_mask); data >>= 1; bitmap.pix(y, x + 1) = get_rgb(data & 0x1, pixel_mask); data >>= 1; bitmap.pix(y, x + 0) = get_rgb(data & 0x1, pixel_mask); } break; case CR0100_2BPP: for (int y = screen.visible_area().min_y; y <= screen.visible_area().max_y; y++) for (int x = screen.visible_area().min_x; x <= screen.visible_area().max_x; x += 4) { u8 data = *pixel_data++; bitmap.pix(y, x + 3) = get_rgb(data & 0x3, pixel_mask); data >>= 2; bitmap.pix(y, x + 2) = get_rgb(data & 0x3, pixel_mask); data >>= 2; bitmap.pix(y, x + 1) = get_rgb(data & 0x3, pixel_mask); data >>= 2; bitmap.pix(y, x + 0) = get_rgb(data & 0x3, pixel_mask); } break; case CR0100_4BPP: for (int y = screen.visible_area().min_y; y <= screen.visible_area().max_y; y++) for (int x = screen.visible_area().min_x; x <= screen.visible_area().max_x; x += 2) { u8 data = *pixel_data++; bitmap.pix(y, x + 1) = get_rgb(data & 0x7, pixel_mask); data >>= 4; bitmap.pix(y, x + 0) = get_rgb(data & 0x7, pixel_mask); } break; case CR0100_8BPP: for (int y = screen.visible_area().min_y; y <= screen.visible_area().max_y; y++) for (int x = screen.visible_area().min_x; x <= screen.visible_area().max_x; x++) bitmap.pix(y, x) = get_rgb(*pixel_data++, pixel_mask); break; } // draw cursors when visible and not blinked off if ((m_cursor_command & (CR47 | CR46 | CR45 | CR44)) && ((m_cursor_command & CR40) == 0 || blink_state)) { // get 64x64 bitmap and cross hair cursor plane enable const u8 bm_cursor_enable = (m_cursor_command & (CR47 | CR46)) >> 6; const u8 ch_cursor_enable = (m_cursor_command & (CR45 | CR44)) >> 4; // get cross hair cursor half thickness const int ch_thickness = (m_cursor_command & CR4241) >> 1; /* * The cursor (x) value to be written is calculated as follows: * * Cx = desired display screen (x) position + H - P * * where * * P = 37 if 1:1 input multiplexing, 52 if 4:1 input multiplexing, * 57 if 5:1 input multiplexing * H = number of pixels between the first rising edge of LD* * following the falling edge of HSYNC* to active video * * The cursor (y) value to be written is calculated as follows: * * Cy = desired display screen (y) position + V - 32 * * where * * V = number of scan lines from the second sync pulse during * vertical blanking to active video * * Values from $0FC0 (-64) to $0FBF (+4031) may be loaded into the * cursor (y) register. The negative values ($0FC0 to $0FFF) are used * in situations where V < 32, and the cursor must be moved off the * top of the screen. */ const int cursor_x = m_cursor_x + ( (m_command_0 & CR0706) == CR0706_11MPX ? 37 : (m_command_0 & CR0706) == CR0706_41MPX ? 52 : (m_command_0 & CR0706) == CR0706_51MPX ? 57 : 0); const int cursor_y = (m_cursor_y < 0xfc0 ? m_cursor_y : m_cursor_y - 0x1000) + 32; // 64x64 bitmap cursor if (bm_cursor_enable) { // compute target 64x64 rectangle rectangle cursor(cursor_x - 31, cursor_x + 32, cursor_y - 31, cursor_y + 32); // intersect with screen bitmap cursor &= bitmap.cliprect(); // draw if any portion is visible if (!cursor.empty()) { for (int y = 0; y < 64; y++) { // get screen y pixel coordinate const int ypos = cursor_y - 31 + y; for (int x = 0; x < 64; x++) { // get screen x pixel coordinate const int xpos = cursor_x - 31 + x; // check if pixel is visible if (cursor.contains(xpos, ypos)) { // retrieve 2 bits of 64x64 bitmap cursor data u8 data = (m_cursor_ram[y * 16 + (x >> 2)] >> ((3 - (x & 3)) << 1)) & bm_cursor_enable; // check for dual-cursor mode and combine with cross-hair data if (ch_cursor_enable) if (((x >= 31 - ch_thickness) && (x <= 31 + ch_thickness)) || ((y >= 31 - ch_thickness) && (y <= 31 + ch_thickness))) data = (m_cursor_command & CR43) ? data | ch_cursor_enable : data ^ ch_cursor_enable; // write cursor data to screen (normal or X Window mode) if (data && !((m_command_2 & CR21) && data == 1)) bitmap.pix(ypos, xpos) = m_cursor_color[data - 1]; } } } } } // cross hair cursor if (ch_cursor_enable) { // get the cross hair cursor color const rgb_t ch_color = m_cursor_color[ch_cursor_enable - 1]; /* * The window (x) value to be written is calculated as follows: * * Wx = desired display screen (x) position + H - P * * where * * P = 5 if 1:1 input multiplexing, 20 if 4:1 input multiplexing, * 25 if 5:1 input multiplexing * H = number of pixels between the first rising edge of LD* * following the falling edge of HSYNC* to active video * * The window (y) value to be written is calculated as follows: * * Wy = desired display screen (y) position + V * * where * * V = number of scan lines from the second sync pulse during * vertical blanking to active video * * Values from $0000 to $0FFF may be written to the window (x) and * (y) registers. A full-screen cross hair is implemented by * loading the window (x,y) registers with $0000, and the window * width and height registers with $0FFF. */ const bool full_screen = (m_window_x == 0 && m_window_y == 0 && m_window_w == 0x0fff && m_window_h == 0x0fff); const int window_x = full_screen ? screen.visible_area().min_x : m_window_x + ( (m_command_0 & CR0706) == CR0706_11MPX ? 5 : (m_command_0 & CR0706) == CR0706_41MPX ? 20 : (m_command_0 & CR0706) == CR0706_51MPX ? 25 : 0); const int window_y = full_screen ? screen.visible_area().min_y : m_window_y; /* * The actual window width is 2, 8 or 10 pixels more than the * value specified by the window width register, depending on * whether 1:1, 4:1 or 5:1 input multiplexing is specified. The * actual window height is 2 pixels more than the value specified * by the window height register. Therefore, the minimum window * width is 2, 8 or 10 pixels for 1:1, 4:1 and 5:1 multiplexing, * respectively. The minimum window height is 2 pixels. * * Values from $0000 to $0FFF may be written to the window width * and height registers. * * Note: testing indicates the cross-hair cursor should be drawn * strictly inside the window, although this is not 100% clear from * the documentation. */ const int window_w = full_screen ? screen.visible_area().width() : m_window_w + ( (m_command_0 & CR0706) == CR0706_11MPX ? 2 : (m_command_0 & CR0706) == CR0706_41MPX ? 8 : (m_command_0 & CR0706) == CR0706_51MPX ? 10 : 0); const int window_h = full_screen ? screen.visible_area().height() : m_window_h + 2; // check for dual-cursor mode if (bm_cursor_enable) { // draw the cross hair cursor as vertical and horizontal filled rectangles broken by the 64x64 cursor area rectangle v1(cursor_x - ch_thickness, cursor_x + ch_thickness, window_y + 1, cursor_y - 32); rectangle v2(cursor_x - ch_thickness, cursor_x + ch_thickness, cursor_y + 33, window_y + window_h); rectangle h1(window_x + 1, cursor_x - 32, cursor_y - ch_thickness, cursor_y + ch_thickness); rectangle h2(cursor_x + 33, window_x + window_w, cursor_y - ch_thickness, cursor_y + ch_thickness); v1 &= bitmap.cliprect(); v2 &= bitmap.cliprect(); h1 &= bitmap.cliprect(); h2 &= bitmap.cliprect(); if (!v1.empty()) bitmap.fill(ch_color, v1); if (!v2.empty()) bitmap.fill(ch_color, v2); if (!h1.empty()) bitmap.fill(ch_color, h1); if (!h2.empty()) bitmap.fill(ch_color, h2); } else { // draw the cross hair cursor as unbroken vertical and horizontal filled rectangles rectangle v(cursor_x - ch_thickness, cursor_x + ch_thickness, window_y + 1, window_y + window_h); rectangle h(window_x + 1, window_x + window_w, cursor_y - ch_thickness, cursor_y + ch_thickness); v &= bitmap.cliprect(); h &= bitmap.cliprect(); if (!v.empty()) bitmap.fill(ch_color, v); if (!h.empty()) bitmap.fill(ch_color, h); } } }
void LiquidCrystal_I2C::cursor_on(){ cursor(); }
int QWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 23) qt_static_metacall(this, _c, _id, _a); _id -= 23; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< bool*>(_v) = isModal(); break; case 1: *reinterpret_cast< Qt::WindowModality*>(_v) = windowModality(); break; case 2: *reinterpret_cast< bool*>(_v) = isEnabled(); break; case 3: *reinterpret_cast< QRect*>(_v) = geometry(); break; case 4: *reinterpret_cast< QRect*>(_v) = frameGeometry(); break; case 5: *reinterpret_cast< QRect*>(_v) = normalGeometry(); break; case 6: *reinterpret_cast< int*>(_v) = x(); break; case 7: *reinterpret_cast< int*>(_v) = y(); break; case 8: *reinterpret_cast< QPoint*>(_v) = pos(); break; case 9: *reinterpret_cast< QSize*>(_v) = frameSize(); break; case 10: *reinterpret_cast< QSize*>(_v) = size(); break; case 11: *reinterpret_cast< int*>(_v) = width(); break; case 12: *reinterpret_cast< int*>(_v) = height(); break; case 13: *reinterpret_cast< QRect*>(_v) = rect(); break; case 14: *reinterpret_cast< QRect*>(_v) = childrenRect(); break; case 15: *reinterpret_cast< QRegion*>(_v) = childrenRegion(); break; case 16: *reinterpret_cast< QSizePolicy*>(_v) = sizePolicy(); break; case 17: *reinterpret_cast< QSize*>(_v) = minimumSize(); break; case 18: *reinterpret_cast< QSize*>(_v) = maximumSize(); break; case 19: *reinterpret_cast< int*>(_v) = minimumWidth(); break; case 20: *reinterpret_cast< int*>(_v) = minimumHeight(); break; case 21: *reinterpret_cast< int*>(_v) = maximumWidth(); break; case 22: *reinterpret_cast< int*>(_v) = maximumHeight(); break; case 23: *reinterpret_cast< QSize*>(_v) = sizeIncrement(); break; case 24: *reinterpret_cast< QSize*>(_v) = baseSize(); break; case 25: *reinterpret_cast< QPalette*>(_v) = palette(); break; case 26: *reinterpret_cast< QFont*>(_v) = font(); break; case 27: *reinterpret_cast< QCursor*>(_v) = cursor(); break; case 28: *reinterpret_cast< bool*>(_v) = hasMouseTracking(); break; case 29: *reinterpret_cast< bool*>(_v) = isActiveWindow(); break; case 30: *reinterpret_cast< Qt::FocusPolicy*>(_v) = focusPolicy(); break; case 31: *reinterpret_cast< bool*>(_v) = hasFocus(); break; case 32: *reinterpret_cast< Qt::ContextMenuPolicy*>(_v) = contextMenuPolicy(); break; case 33: *reinterpret_cast< bool*>(_v) = updatesEnabled(); break; case 34: *reinterpret_cast< bool*>(_v) = isVisible(); break; case 35: *reinterpret_cast< bool*>(_v) = isMinimized(); break; case 36: *reinterpret_cast< bool*>(_v) = isMaximized(); break; case 37: *reinterpret_cast< bool*>(_v) = isFullScreen(); break; case 38: *reinterpret_cast< QSize*>(_v) = sizeHint(); break; case 39: *reinterpret_cast< QSize*>(_v) = minimumSizeHint(); break; case 40: *reinterpret_cast< bool*>(_v) = acceptDrops(); break; case 41: *reinterpret_cast< QString*>(_v) = windowTitle(); break; case 42: *reinterpret_cast< QIcon*>(_v) = windowIcon(); break; case 43: *reinterpret_cast< QString*>(_v) = windowIconText(); break; case 44: *reinterpret_cast< double*>(_v) = windowOpacity(); break; case 45: *reinterpret_cast< bool*>(_v) = isWindowModified(); break; case 46: *reinterpret_cast< QString*>(_v) = toolTip(); break; case 47: *reinterpret_cast< QString*>(_v) = statusTip(); break; case 48: *reinterpret_cast< QString*>(_v) = whatsThis(); break; case 49: *reinterpret_cast< QString*>(_v) = accessibleName(); break; case 50: *reinterpret_cast< QString*>(_v) = accessibleDescription(); break; case 51: *reinterpret_cast< Qt::LayoutDirection*>(_v) = layoutDirection(); break; case 52: *reinterpret_cast< bool*>(_v) = autoFillBackground(); break; case 53: *reinterpret_cast< QString*>(_v) = styleSheet(); break; case 54: *reinterpret_cast< QLocale*>(_v) = locale(); break; case 55: *reinterpret_cast< QString*>(_v) = windowFilePath(); break; case 56: *reinterpret_cast< Qt::InputMethodHints*>(_v) = inputMethodHints(); break; } _id -= 57; } else if (_c == QMetaObject::WriteProperty) { void *_v = _a[0]; switch (_id) { case 1: setWindowModality(*reinterpret_cast< Qt::WindowModality*>(_v)); break; case 2: setEnabled(*reinterpret_cast< bool*>(_v)); break; case 3: setGeometry(*reinterpret_cast< QRect*>(_v)); break; case 8: move(*reinterpret_cast< QPoint*>(_v)); break; case 10: resize(*reinterpret_cast< QSize*>(_v)); break; case 16: setSizePolicy(*reinterpret_cast< QSizePolicy*>(_v)); break; case 17: setMinimumSize(*reinterpret_cast< QSize*>(_v)); break; case 18: setMaximumSize(*reinterpret_cast< QSize*>(_v)); break; case 19: setMinimumWidth(*reinterpret_cast< int*>(_v)); break; case 20: setMinimumHeight(*reinterpret_cast< int*>(_v)); break; case 21: setMaximumWidth(*reinterpret_cast< int*>(_v)); break; case 22: setMaximumHeight(*reinterpret_cast< int*>(_v)); break; case 23: setSizeIncrement(*reinterpret_cast< QSize*>(_v)); break; case 24: setBaseSize(*reinterpret_cast< QSize*>(_v)); break; case 25: setPalette(*reinterpret_cast< QPalette*>(_v)); break; case 26: setFont(*reinterpret_cast< QFont*>(_v)); break; case 27: setCursor(*reinterpret_cast< QCursor*>(_v)); break; case 28: setMouseTracking(*reinterpret_cast< bool*>(_v)); break; case 30: setFocusPolicy(*reinterpret_cast< Qt::FocusPolicy*>(_v)); break; case 32: setContextMenuPolicy(*reinterpret_cast< Qt::ContextMenuPolicy*>(_v)); break; case 33: setUpdatesEnabled(*reinterpret_cast< bool*>(_v)); break; case 34: setVisible(*reinterpret_cast< bool*>(_v)); break; case 40: setAcceptDrops(*reinterpret_cast< bool*>(_v)); break; case 41: setWindowTitle(*reinterpret_cast< QString*>(_v)); break; case 42: setWindowIcon(*reinterpret_cast< QIcon*>(_v)); break; case 43: setWindowIconText(*reinterpret_cast< QString*>(_v)); break; case 44: setWindowOpacity(*reinterpret_cast< double*>(_v)); break; case 45: setWindowModified(*reinterpret_cast< bool*>(_v)); break; case 46: setToolTip(*reinterpret_cast< QString*>(_v)); break; case 47: setStatusTip(*reinterpret_cast< QString*>(_v)); break; case 48: setWhatsThis(*reinterpret_cast< QString*>(_v)); break; case 49: setAccessibleName(*reinterpret_cast< QString*>(_v)); break; case 50: setAccessibleDescription(*reinterpret_cast< QString*>(_v)); break; case 51: setLayoutDirection(*reinterpret_cast< Qt::LayoutDirection*>(_v)); break; case 52: setAutoFillBackground(*reinterpret_cast< bool*>(_v)); break; case 53: setStyleSheet(*reinterpret_cast< QString*>(_v)); break; case 54: setLocale(*reinterpret_cast< QLocale*>(_v)); break; case 55: setWindowFilePath(*reinterpret_cast< QString*>(_v)); break; case 56: setInputMethodHints(*reinterpret_cast< Qt::InputMethodHints*>(_v)); break; } _id -= 57; } else if (_c == QMetaObject::ResetProperty) { switch (_id) { case 27: unsetCursor(); break; case 51: unsetLayoutDirection(); break; case 54: unsetLocale(); break; } _id -= 57; } else if (_c == QMetaObject::QueryPropertyDesignable) { bool *_b = reinterpret_cast<bool*>(_a[0]); switch (_id) { case 41: *_b = isWindow(); break; case 42: *_b = isWindow(); break; case 43: *_b = isWindow(); break; case 44: *_b = isWindow(); break; case 45: *_b = isWindow(); break; case 55: *_b = isWindow(); break; } _id -= 57; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 57; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 57; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 57; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 57; } #endif // QT_NO_PROPERTIES return _id; }
void search(POINT point[SPOTNUM],int *flag_click_beg,int *start,int *finish) { int star_fin_flag=-1; int mouse_x=320,mouse_y=175,mouse_click; int i; BUTTON bt[4]; int flag=0; //č®¾å®äøäøŖē¶ęå¼ļ¼éæå éå¤ē»ļ¼čäŗ§ēéŖåØēęę for(i=0;i<3;i++) { bt[i].x=493+50*i; bt[i].y=3; bt[i].x1=bt[i].x+43; bt[i].y1=bt[i].y+25; } bt[3].x=5;bt[3].y=325;bt[3].x1=45; bt[3].y1=345; initmouse(0,getmaxx(),0,getmaxy()); cursor(mouse_x,mouse_y); while(1) { newmouse(&mouse_x, &mouse_y, &mouse_click); /*é¼ ę ē§»åØå°ęé®äøļ¼é«äŗ®ę¾ē¤ŗęé®*/ /*é¼ ę ē±ęé®å¤čæå „ęé®éļ¼ē±äŗē¶ęå¼flagäøŗäŗ1ļ¼ę仄å¦ęę£ęµå°é¼ ę ē§»åØęé®ēä½ē½®äøę¶ļ¼ ä¼ē»åŗé«äŗ®ę¶ē»é¢ļ¼čflagå¼å·²åƹåäøŗ0ļ¼ę仄äøä¼åå»ē»čæē§é«äŗ®ē¶ęļ¼éæå äŗ§ēéŖåØēęę*/ if(mouse_x>bt[0].x&& mouse_x<bt[0].x1&&mouse_y>bt[0].y&&mouse_y<bt[0].y1&& flag==1) { cursor(mouse_x,mouse_y); //ę¤å¤ēå ·ä½å«ä¹ęÆåØę¤ä½ē½®čæč”ē»é¼ ę ēØå¼ęēę¹å¼č¦ēęļ¼äøé¢åč°ēØäøꬔcursor(mouse_x,mouse_y);åØę¤ä½ē½®ē»äøäøŖé¼ ę bt[0].state=HIGHLIGHT; //čæäøŖęÆäøę¦ę£ęµå°é¼ ę čæå „å°čæäøŖä½ē½®ļ¼å°±ē»äøäøŖé¼ ę ļ¼ē¶åē¬¬äŗäøŖęÆåØå¤é¢ęå®å¼ęęļ¼ę³ØęčæäøŖęÆåØé¼ ę åØå¤é¢å°±ē»äŗ dr_LPbutton(&bt[0]); flag=0; cursor(mouse_x,mouse_y); } if(mouse_x>bt[1].x&& mouse_x<bt[1].x1&&mouse_y>bt[1].y&&mouse_y<bt[1].y1&& flag==1) { cursor(mouse_x,mouse_y); bt[1].state=HIGHLIGHT; dr_LPbutton(&bt[1]); flag=0; cursor(mouse_x,mouse_y); } if(mouse_x>bt[2].x&& mouse_x<bt[2].x1&&mouse_y>bt[2].y&&mouse_y<bt[2].y1&& flag==1) { cursor(mouse_x,mouse_y); bt[2].state=HIGHLIGHT; dr_LPbutton(&bt[2]); flag=0; cursor(mouse_x,mouse_y); } if(mouse_x>bt[3].x&& mouse_x<bt[3].x1&&mouse_y>bt[3].y&&mouse_y<bt[3].y1&& flag==1) { cursor(mouse_x,mouse_y); bt[3].state=HIGHLIGHT; dr_LPbutton(&bt[3]); flag=0; cursor(mouse_x,mouse_y); } if(mouse_x>470&& mouse_x<490&&mouse_y>0&&mouse_y<30&& flag==1) { cursor(mouse_x,mouse_y); setfillstyle(1,WHITE); bar(470,0,489,20); setcolor(BLACK); setlinestyle(0,0,3);//ē»X line(470,0,489,20); line(470,20,489,0); flag=0; cursor(mouse_x,mouse_y); } /*é¼ ę ē§»åŗęé®ļ¼ęé®åå¤åøøę,å¦ęę¤ę¶é¼ ę å·²ē»ęäøļ¼ååē¹é¼ ę ä¹ę²”ęä»»ä½ååŗ*/ /*å¼å§ēę¶åļ¼é¼ ę čÆå®ęÆåØęé®ä¹å¤ćå³ä½æflagäøŗ0ļ¼čæå „čæē§ē¶ęåļ¼ē«å³č®©flagåäøŗ1.å¦ęé¼ ę čæåØęé®ä¹å¤ē§»åØēčÆļ¼ å°±åŖä¼åØę°ēä½ē½®ē»åŗé¼ ę äŗļ¼čäøä¼åå»ē»ęé®ļ¼ä»čéæå äŗ§ēéŖåØēęę*/ if(!(mouse_x>bt[0].x && mouse_x<bt[0].x1 && mouse_y>bt[0].y && mouse_y<bt[0].y1) &&!(mouse_x>bt[1].x && mouse_x<bt[1].x1 &&mouse_y>bt[1].y && mouse_y<bt[1].y1) &&!(mouse_x>bt[2].x && mouse_x<bt[2].x1 && mouse_y>bt[2].y&& mouse_y<bt[2].y1) &&!(mouse_x>bt[3].x && mouse_x<bt[3].x1 && mouse_y>bt[3].y&& mouse_y<bt[3].y1) &&!(mouse_x>470&& mouse_x<490&&mouse_y>0&&mouse_y<30)) { if(0==flag) { flag=1; bt[0].state= NORMALSTATE; bt[1].state= NORMALSTATE; bt[2].state= NORMALSTATE; bt[3].state= NORMALSTATE; cursor(mouse_x,mouse_y); dr_LPbutton(&bt[0]); dr_LPbutton(&bt[1]); dr_LPbutton(&bt[2]); dr_LPbutton(&bt[3]); setfillstyle(1,BROWN); bar(470,0,489,20); setcolor(YELLOW); setlinestyle(0,0,3);//ē»X line(470,0,489,20); line(470,20,489,0); cursor(mouse_x,mouse_y); } } if(1==mouse_click &&mouse_x>bt[0].x && mouse_x<bt[0].x1 && mouse_y>bt[0].y && mouse_y<bt[0].y1) { star_fin_flag=0; *flag_click_beg=0; cursor(mouse_x,mouse_y); bt[0].state=PRESS; dr_LPbutton(&bt[0]); cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); input(point,star_fin_flag,start); break; } if(1==mouse_click &&mouse_x>bt[1].x && mouse_x<bt[1].x1 && mouse_y>bt[1].y && mouse_y<bt[1].y1) { star_fin_flag=1; *flag_click_beg=0; cursor(mouse_x,mouse_y); bt[1].state=PRESS; dr_LPbutton(&bt[1]); cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); input(point,star_fin_flag,finish); break; } if(1==mouse_click &&mouse_x>bt[2].x && mouse_x<bt[2].x1 && mouse_y>bt[2].y && mouse_y<bt[2].y1) { *flag_click_beg=1; cursor(mouse_x,mouse_y); bt[2].state=PRESS; dr_LPbutton(&bt[2]); cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); break; } if(1==mouse_click &&mouse_x>bt[3].x && mouse_x<bt[3].x1 && mouse_y>bt[3].y && mouse_y<bt[3].y1) { bt[3].state=PRESS; dr_LPbutton(&bt[3]); s_help(); cleardevice(); setbkcolor(LIGHTGREEN); break; } if( mouse_click==1&&mouse_x>470 && mouse_x<489 && mouse_y>0 && mouse_y<30) { cursor(mouse_x,mouse_y); closegraph(); goodbye(); exit(0); } } }
void TestTableLayout::initTest(int rows, int columns, KoTableStyle *tableStyle, const QList<KoTableColumnStyle *> &columnStyles, const QList<KoTableRowStyle *> &rowStyles, const QMap<QPair<int, int>, KoTableCellStyle *> &cellStyles, const QMap<QPair<int, int>, QString> &cellTexts) { // Mock shape of size 200x1000 pt. m_shape = new MockTextShape(); Q_ASSERT(m_shape); m_shape->setSize(QSizeF(200, 1000)); // Document layout. m_layout = m_shape->layout; Q_ASSERT(m_layout); // Document. m_doc = m_layout->document(); Q_ASSERT(m_doc); m_doc->setDefaultFont(QFont("Sans Serif", 12, QFont::Normal, false)); // Layout state (layout helper). m_textLayout = new TextShapeLayout(m_layout); Q_ASSERT(m_textLayout); m_layout->setLayout(m_textLayout); // Style manager. m_styleManager = new KoStyleManager(); Q_ASSERT(m_styleManager); KoTextDocument(m_doc).setStyleManager(m_styleManager); // Table style. m_defaultTableStyle = new KoTableStyle(); Q_ASSERT(m_defaultTableStyle); m_defaultTableStyle->setMargin(0.0); m_defaultTableStyle->setWidth(QTextLength(QTextLength::FixedLength, 200)); QTextTableFormat tableFormat; if (tableStyle) { tableStyle->applyStyle(tableFormat); } else { m_defaultTableStyle->applyStyle(tableFormat); } // Table. QTextCursor cursor(m_doc); m_table = cursor.insertTable(rows, columns, tableFormat); Q_ASSERT(m_table); // Column and row style manager. m_tableColumnAndRowStyleManager = KoTableColumnAndRowStyleManager::getManager(m_table); // Column styles. m_defaultColumnStyle.setRelativeColumnWidth(50.0); for (int col = 0; col < columns; ++col) { if (columnStyles.value(col)) { m_tableColumnAndRowStyleManager.setColumnStyle(col, *(columnStyles.at(col))); } else { m_tableColumnAndRowStyleManager.setColumnStyle(col, m_defaultColumnStyle); } } // Row styles. for (int row = 0; row < rows; ++row) { if (rowStyles.value(row)) { m_tableColumnAndRowStyleManager.setRowStyle(row, *(rowStyles.at(row))); } else { m_tableColumnAndRowStyleManager.setRowStyle(row, m_defaultRowStyle); } } // Cell styles and texts. m_defaultCellStyle = new KoTableCellStyle(); Q_ASSERT(m_defaultCellStyle); for (int row = 0; row < m_table->rows(); ++row) { for (int col = 0; col < m_table->columns(); ++col) { // Style. QTextTableCell cell = m_table->cellAt(row, col); QTextTableCellFormat cellFormat = cell.format().toTableCellFormat(); if (cellStyles.contains(qMakePair(row, col))) { cellStyles.value(qMakePair(row, col))->applyStyle(cellFormat); cell.setFormat(cellFormat.toCharFormat()); } else { m_defaultCellStyle->applyStyle(cellFormat); } cell.setFormat(cellFormat.toCharFormat()); // Text. if (cellTexts.contains(qMakePair(row, col))) { cell.firstCursorPosition().insertText(cellTexts.value(qMakePair(row, col))); } } } KoParagraphStyle style; style.setStyleId(101); // needed to do manually since we don't use the stylemanager QTextBlock b2 = m_doc->begin(); while (b2.isValid()) { style.applyStyle(b2); b2 = b2.next(); } }
void TestStyles::testUnapplyStyle() { // Used to test OverlineColor style QColor testOverlineColor(255, 128, 64); KoCharacterStyle::LineWeight testOverlineWeight = KoCharacterStyle::ThickLineWeight; qreal testOverlineWidth = 1.5; // in this test we should avoid testing any of the hardcodedDefaultProperties; see KoCharacterStyle for details! KoParagraphStyle headers; headers.setOverlineColor(testOverlineColor); headers.setOverlineMode(KoCharacterStyle::ContinuousLineMode); headers.setOverlineStyle(KoCharacterStyle::DottedLine); headers.setOverlineType(KoCharacterStyle::DoubleLine); headers.setOverlineWidth(testOverlineWeight, testOverlineWidth); headers.setFontWeight(QFont::Bold); headers.setAlignment(Qt::AlignCenter); KoParagraphStyle head1; head1.setParentStyle(&headers); head1.setLeftMargin(QTextLength(QTextLength::FixedLength, 40)); QTextDocument doc; doc.setPlainText("abc"); QTextBlock block = doc.begin(); head1.applyStyle(block); QTextCursor cursor(block); QTextBlockFormat bf = cursor.blockFormat(); KoParagraphStyle bfStyle (bf, cursor.charFormat()); QCOMPARE(bf.alignment(), Qt::AlignCenter); QCOMPARE(bfStyle.leftMargin(), 40.); QTextCharFormat cf = cursor.charFormat(); QCOMPARE(cf.colorProperty(KoCharacterStyle::OverlineColor), testOverlineColor); QCOMPARE(cf.intProperty(KoCharacterStyle::OverlineMode), (int) KoCharacterStyle::ContinuousLineMode); QCOMPARE(cf.intProperty(KoCharacterStyle::OverlineStyle), (int) KoCharacterStyle::DottedLine); QCOMPARE(cf.intProperty(KoCharacterStyle::OverlineType), (int) KoCharacterStyle::DoubleLine); QCOMPARE(cf.intProperty(KoCharacterStyle::OverlineWeight), (int) testOverlineWeight); QCOMPARE(cf.doubleProperty(KoCharacterStyle::OverlineWidth), testOverlineWidth); head1.unapplyStyle(block); bf = cursor.blockFormat(); QCOMPARE(bf.hasProperty(QTextFormat::BlockAlignment), false); QCOMPARE(bf.hasProperty(QTextFormat::BlockLeftMargin), false); cf = cursor.charFormat(); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineColor), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineMode), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineStyle), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineType), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWeight), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWidth), false); doc.clear(); block = doc.begin(); head1.applyStyle(block); bf = cursor.blockFormat(); KoParagraphStyle bfStyle2 (bf, cursor.charFormat()); QCOMPARE(bf.alignment(), Qt::AlignCenter); QCOMPARE(bfStyle2.leftMargin(), 40.); cf = cursor.charFormat(); //QCOMPARE(cf.fontOverline(), true); QCOMPARE(cf.colorProperty(KoCharacterStyle::OverlineColor), testOverlineColor); QCOMPARE(cf.intProperty(KoCharacterStyle::OverlineMode), (int) KoCharacterStyle::ContinuousLineMode); QCOMPARE(cf.intProperty(KoCharacterStyle::OverlineStyle), (int) KoCharacterStyle::DottedLine); QCOMPARE(cf.intProperty(KoCharacterStyle::OverlineType), (int) KoCharacterStyle::DoubleLine); QCOMPARE(cf.intProperty(KoCharacterStyle::OverlineWeight), (int) testOverlineWeight); QCOMPARE(cf.doubleProperty(KoCharacterStyle::OverlineWidth), testOverlineWidth); head1.unapplyStyle(block); bf = cursor.blockFormat(); QCOMPARE(bf.hasProperty(QTextFormat::BlockAlignment), false); QCOMPARE(bf.hasProperty(QTextFormat::BlockLeftMargin), false); cf = cursor.charFormat(); //QCOMPARE(cf.hasProperty(QTextFormat::FontOverline), false); doc.setHtml("bla bla<i>italic</i>enzo"); block = doc.begin(); head1.applyStyle(block); bf = cursor.blockFormat(); KoParagraphStyle bfStyle3(bf, cursor.charFormat()); QCOMPARE(bf.alignment(), Qt::AlignCenter); QCOMPARE(bfStyle3.leftMargin(), 40.); cf = cursor.charFormat(); //QCOMPARE(cf.fontOverline(), true); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineColor), true); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineMode), true); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineStyle), true); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineType), true); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWeight), true); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWidth), true); cursor.setPosition(7); cursor.setPosition(12, QTextCursor::KeepAnchor); QTextCharFormat italic; italic.setFontItalic(true); cursor.mergeCharFormat(italic); cursor.setPosition(8); cf = cursor.charFormat(); QCOMPARE(cf.fontItalic(), true); cursor.setPosition(0); head1.unapplyStyle(block); cursor.setPosition(0); bf = cursor.blockFormat(); QCOMPARE(bf.hasProperty(QTextFormat::BlockAlignment), false); QCOMPARE(bf.hasProperty(QTextFormat::BlockLeftMargin), false); cf = cursor.charFormat(); //QCOMPARE(cf.hasProperty(QTextFormat::FontOverline), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineColor), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineMode), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineStyle), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineType), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWeight), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWidth), false); cursor.setPosition(8); cf = cursor.charFormat(); //QCOMPARE(cf.hasProperty(QTextFormat::FontOverline), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineColor), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineMode), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineStyle), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineType), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWeight), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWidth), false); QCOMPARE(cf.fontItalic(), true); cursor.setPosition(12); cf = cursor.charFormat(); //QCOMPARE(cf.hasProperty(QTextFormat::FontOverline), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineColor), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineMode), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineStyle), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineType), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWeight), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWidth), false); QCOMPARE(cf.fontItalic(), true); cursor.setPosition(13); cf = cursor.charFormat(); //QCOMPARE(cf.hasProperty(QTextFormat::FontOverline), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineColor), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineMode), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineStyle), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineType), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWeight), false); QCOMPARE(cf.hasProperty(KoCharacterStyle::OverlineWidth), false); QCOMPARE(cf.hasProperty(QTextFormat::FontWeight), false); QCOMPARE(cf.hasProperty(QTextFormat::FontItalic), false); }
bool BaseTextDocument::save(QString *errorString, const QString &fileName, bool autoSave) { QTextCursor cursor(d->m_document); // When autosaving, we don't want to modify the document/location under the user's fingers. BaseTextEditorWidget *editorWidget = 0; int savedPosition = 0; int savedAnchor = 0; int undos = d->m_document->availableUndoSteps(); // When saving the current editor, make sure to maintain the cursor position for undo Core::IEditor *currentEditor = Core::EditorManager::currentEditor(); if (BaseTextEditor *editable = qobject_cast<BaseTextEditor*>(currentEditor)) { if (editable->document() == this) { editorWidget = editable->editorWidget(); QTextCursor cur = editorWidget->textCursor(); savedPosition = cur.position(); savedAnchor = cur.anchor(); cursor.setPosition(cur.position()); } } cursor.beginEditBlock(); cursor.movePosition(QTextCursor::Start); if (d->m_storageSettings.m_cleanWhitespace) cleanWhitespace(cursor, d->m_storageSettings.m_cleanIndentation, d->m_storageSettings.m_inEntireDocument); if (d->m_storageSettings.m_addFinalNewLine) ensureFinalNewLine(cursor); cursor.endEditBlock(); QString fName = d->m_fileName; if (!fileName.isEmpty()) fName = fileName; Utils::TextFileFormat saveFormat = format(); if (saveFormat.codec->name() == "UTF-8") { switch (d->m_extraEncodingSettings.m_utf8BomSetting) { case TextEditor::ExtraEncodingSettings::AlwaysAdd: saveFormat.hasUtf8Bom = true; break; case TextEditor::ExtraEncodingSettings::OnlyKeep: break; case TextEditor::ExtraEncodingSettings::AlwaysDelete: saveFormat.hasUtf8Bom = false; break; } } // "UTF-8" const bool ok = write(fName, saveFormat, d->m_document->toPlainText(), errorString); if (autoSave && undos < d->m_document->availableUndoSteps()) { d->m_document->undo(); if (editorWidget) { QTextCursor cur = editorWidget->textCursor(); cur.setPosition(savedAnchor); cur.setPosition(savedPosition, QTextCursor::KeepAnchor); editorWidget->setTextCursor(cur); } } if (!ok) return false; d->m_autoSaveRevision = d->m_document->revision(); if (autoSave) return true; const QFileInfo fi(fName); const QString oldFileName = d->m_fileName; d->m_fileName = QDir::cleanPath(fi.absoluteFilePath()); d->m_document->setModified(false); emit fileNameChanged(oldFileName, d->m_fileName); emit titleChanged(fi.fileName()); emit changed(); return true; }
void SWFontRenderer::updateMesh() { if ( !getMesh() ) return; if ( !m_fontInfo.isValid() ) return; SWMesh* mesh = getMesh(); mesh->resizeVertexStream( m_text.size() * 4 ); mesh->resizeTexCoordStream( m_text.size() * 4 ); mesh->resizeTriangleStream( m_text.size() * 2 ); tuint32 lastID = '\r'; tvec2 cursor( 0, 0 ); tvec2 scale( m_fontInfo()->getScaleW(), m_fontInfo()->getScaleH() ); float lineHeight = getLinesHeight( m_text ); switch ( m_alignV ) { case SW_Align_Top : cursor.y = 0; break; case SW_Align_Bottom : cursor.y = lineHeight; break; case SW_Align_Center : cursor.y = lineHeight/2.0f; break; } for ( tuint i = 0 ; i < m_text.size() ; ++i ) { //! convert character to unsigned char id tbyte byteID = m_text[i]; tuint32 id = byteID; if ( lastID == (int)'\n' || lastID == (int)'\r' ) { float lineWidth = (float)getLineWidth( m_text, i ); switch ( m_alignH ) { case SW_Align_Left : cursor.x = 0; break; case SW_Align_Right : cursor.x = -lineWidth; break; case SW_Align_Center : cursor.x = -lineWidth/2.0f; break; } } if ( id == (int)'\n' || id == (int)'\r' ) { lastID = id; cursor.y -= m_fontInfo()->getLineHeight(); continue; } SWFontInfo::Char* fontChar = m_fontInfo()->getChar( id ); if ( fontChar == NULL ) continue; SWFontInfo::Kerning* kerning = m_fontInfo()->getKerning( lastID, id ); cursor.x += (kerning != NULL)? kerning->amount : 0; lastID = id; tuint base = i*4; float left = cursor.x + fontChar->xoffset; float top = cursor.y - fontChar->yoffset; float right = left + fontChar->width; float bottom = top - fontChar->height; cursor.x += fontChar->xadvence; mesh->setTriangle( (i*2)+0, tindex3( base+0, base+1, base+2 ) ); mesh->setTriangle( (i*2)+1, tindex3( base+3, base+2, base+1 ) ); mesh->setVertex( base+0, tvec3( left, top, 0 ) ); mesh->setVertex( base+1, tvec3( right, top, 0 ) ); mesh->setVertex( base+2, tvec3( left, bottom, 0 ) ); mesh->setVertex( base+3, tvec3( right, bottom, 0 ) ); mesh->setTexCoord( base+0, tvec2( fontChar->x/scale.x, fontChar->y/scale.y ) ); mesh->setTexCoord( base+1, tvec2( (fontChar->x + fontChar->width)/scale.x, fontChar->y/scale.y ) ); mesh->setTexCoord( base+2, tvec2( fontChar->x/scale.x, (fontChar->y + fontChar->height)/scale.y ) ); mesh->setTexCoord( base+3, tvec2( (fontChar->x + fontChar->width)/scale.x, (fontChar->y + fontChar->height)/scale.y ) ); } }
void FormSimularCuotas::generaReporte() { documento = new QTextDocument(); QTextCursor cursor( documento ); int cant_filas = 3 + SBCantidad->value(); QTextTable *tabla = cursor.insertTable( cant_filas, 5 ); QTextTableFormat formatoTabla = tabla->format(); formatoTabla.setHeaderRowCount( 1 ); formatoTabla.setWidth( QTextLength( QTextLength::PercentageLength, 100 ) ); formatoTabla.setBorderStyle( QTextFrameFormat::BorderStyle_Solid ); formatoTabla.setBorder( 1 ); formatoTabla.setCellPadding( 3 ); formatoTabla.setCellSpacing( 0 ); tabla->setFormat( formatoTabla ); tabla->cellAt( 0,0 ).firstCursorPosition().insertHtml( "<b> # Cuota</b>" ); tabla->cellAt( 0,1 ).firstCursorPosition().insertHtml( "<b> Fecha de pago </b>" ); tabla->cellAt( 0,2 ).firstCursorPosition().insertHtml( "<b> Cuota </b>" ); tabla->cellAt( 0,3 ).firstCursorPosition().insertHtml( "<b> Pagado </b> " ); tabla->cellAt( 0,4 ).firstCursorPosition().insertHtml( "<b> Subtotal </b>" ); QTextBlockFormat bfizq = tabla->cellAt( 0, 3 ).firstCursorPosition().blockFormat(); bfizq.setAlignment( Qt::AlignRight ); // Ingreso los datos double subtotal = DSBImporte->value(); double pagado = DSBEntrega->value(); // Importe tabla->cellAt( 1, 0 ).firstCursorPosition().insertHtml( " " ); tabla->cellAt( 1, 1 ).firstCursorPosition().insertHtml( "Importe a pagar en cuotas" ); tabla->cellAt( 1, 2 ).firstCursorPosition().setBlockFormat( bfizq ); tabla->cellAt( 1, 2 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( subtotal, 10, 'f', 2 ) ); tabla->cellAt( 1, 3 ).firstCursorPosition().setBlockFormat( bfizq ); tabla->cellAt( 1, 3 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( 0.0, 10, 'f', 2 ) ); tabla->cellAt( 1, 4 ).firstCursorPosition().setBlockFormat( bfizq ); tabla->cellAt( 1, 4 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( subtotal, 10, 'f', 2 ) ); subtotal -= DSBEntrega->value(); tabla->cellAt( 2, 0 ).firstCursorPosition().insertHtml( "" ); tabla->cellAt( 2, 1 ).firstCursorPosition().insertHtml( "Entrega inicial" ); tabla->cellAt( 2, 2 ).firstCursorPosition().setBlockFormat( bfizq ); tabla->cellAt( 2, 2 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( DSBEntrega->value(), 10, 'f', 2 ) ); tabla->cellAt( 2, 3 ).firstCursorPosition().setBlockFormat( bfizq ); tabla->cellAt( 2, 3 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( pagado, 10, 'f', 2 ) ); tabla->cellAt( 2, 4 ).firstCursorPosition().setBlockFormat( bfizq ); tabla->cellAt( 2, 4 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( subtotal, 10, 'f', 2 ) ); subtotal *= ( 1 + DSBInteres->value() / 100 ); double valor_cuota = ( ( DSBTotal->value() ) * ( 1 + DSBInteres->value() / 100 ) ) / SBCantidad->value(); QDate fch = DEInicio->date(); for( int i = 1; i<=SBCantidad->value(); i++ ) { tabla->cellAt( i+2, 0 ).firstCursorPosition().insertHtml( QString( "#%1" ).arg( i ) ); tabla->cellAt( i+2, 1 ).firstCursorPosition().insertHtml( QString( "%1" ).arg( fch.toString( Qt::SystemLocaleShortDate ) ) ); fch.addDays( (i-1)*MPlanCuota::diasEnPeriodo( (MPlanCuota::Periodo) CBPeriodo->currentIndex(), fch ) ); tabla->cellAt( i+2, 2 ).firstCursorPosition().setBlockFormat( bfizq ); tabla->cellAt( i+2, 2 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( valor_cuota, 10, 'f', 2 ) ); pagado += valor_cuota; tabla->cellAt( i+2, 3 ).firstCursorPosition().setBlockFormat( bfizq ); tabla->cellAt( i+2, 3 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( pagado, 10, 'f', 2 ) ); subtotal -= valor_cuota; tabla->cellAt( i+2, 4 ).firstCursorPosition().setBlockFormat( bfizq ); tabla->cellAt( i+2, 4 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( subtotal, 10, 'f', 2 ) ); } // Firma y aclaracion cursor.movePosition( QTextCursor::End ); cursor.insertBlock(); cursor.insertBlock(); cursor.insertBlock(); cursor.insertBlock(); cursor.insertBlock(); cursor.insertText( "Firma del contrayente: ___________________________" ); cursor.insertBlock(); cursor.insertBlock(); cursor.insertBlock(); cursor.insertBlock(); cursor.insertText( QString::fromUtf8( "Aclaracion: ________________________________________________ DNI:___-__________-___" ) ); cursor.insertBlock(); cursor.insertBlock(); cursor.insertHtml( QString::fromUtf8( "<small>En caso de provocarse un atraso en la fecha de pago de cualquiera de las cuotas, se aplicara el recargo correspondiente tal cual se hace actualmenete con cualquier recibo emitido por nuestra entidad.</small>" ) ); // Cabecera cursor.movePosition( QTextCursor::Start ); cursor.insertBlock(); #ifdef Q_OS_WIN cursor.insertHtml( "<h1>HiComp ComputaciĆ³n</h1><br />" ); #else cursor.insertHtml( "<h1>" + ERegistroPlugins::getInstancia()->pluginInfo()->empresa() + "</h1><br />" ); #endif cursor.insertHtml( "<h2>Plan de cuotas</h2><br /><br />" ); cursor.insertBlock(); cursor.insertHtml( QString( "<b>Fecha de Inicio:</b> %1 <br />" ).arg( DEInicio->date().toString( Qt::SystemLocaleLongDate ) ) ); cursor.insertHtml( QString( "<b>Nombre del cliente:</b> %1 <br />").arg( MClientes::getRazonSocial( _id_cliente ) ) ); return; }
// MouseMoved void ObjectView::MouseMoved(BPoint where, uint32 transit, const BMessage* dragMessage) { // BRect dirty(where, where); // dirty.InsetBy(-10, -10); // Invalidate(dirty); if (dragMessage) { //printf("ObjectView::MouseMoved(BPoint(%.1f, %.1f)) - DRAG MESSAGE\n", where.x, where.y); //Window()->CurrentMessage()->PrintToStream(); } else { //printf("ObjectView::MouseMoved(BPoint(%.1f, %.1f))\n", where.x, where.y); } if (fScrolling) { BCursor cursor(kGrabCursor); SetViewCursor(&cursor); BPoint offset = fLastMousePos - where; ScrollBy(offset.x, offset.y); fLastMousePos = where + offset; } else if (fInitiatingDrag) { BPoint offset = fLastMousePos - where; if (sqrtf(offset.x * offset.x + offset.y * offset.y) > 5.0) { BMessage dragMessage('drag'); BBitmap* dragBitmap = new BBitmap(BRect(0, 0, 40, 40), B_RGBA32, true); if (dragBitmap->Lock()) { BView* helper = new BView(dragBitmap->Bounds(), "offscreen view", B_FOLLOW_ALL, B_WILL_DRAW); dragBitmap->AddChild(helper); helper->SetDrawingMode(B_OP_ALPHA); helper->SetBlendingMode(B_CONSTANT_ALPHA, B_ALPHA_COMPOSITE); BRect r(helper->Bounds()); helper->SetHighColor(0, 0, 0, 128); helper->StrokeRect(r); helper->SetHighColor(200, 200, 200, 100); r.InsetBy(1, 1); helper->FillRect(r); helper->SetHighColor(0, 0, 0, 255); const char* text = "Test"; float pos = (r.Width() - helper->StringWidth(text)) / 2; helper->DrawString(text, BPoint(pos, 25)); helper->Sync(); } DragMessage(&dragMessage, dragBitmap, B_OP_ALPHA, B_ORIGIN, this); fInitiatingDrag = false; } } else { BCursor cursor(kMoveCursor); SetViewCursor(&cursor); if (fState && fState->IsTracking()) { BRect before = fState->Bounds(); fState->MouseMoved(where); BRect after = fState->Bounds(); BRect invalid(before | after); Invalidate(invalid); } } // SetViewCursor(); }
// Check whether the current view is elligible for action. unsigned int qtractorTimeScaleForm::flags (void) const { if (m_pTimeScale == NULL) return 0; unsigned int iFlags = 0; float fTempo = m_ui.TempoSpinBox->tempo(); unsigned short iBeatsPerBar = m_ui.TempoSpinBox->beatsPerBar(); unsigned short iBeatDivisor = m_ui.TempoSpinBox->beatDivisor(); unsigned short iBar = bar(); qtractorTimeScale::Cursor cursor(m_pTimeScale); qtractorTimeScale::Node *pNode = cursor.seekBar(iBar); if (pNode && pNode->bar == iBar) { iFlags |= UpdateNode; if (pNode->prev()) iFlags |= RemoveNode; } if (pNode && ::fabs(pNode->tempo - fTempo) < 0.05f // && pNode->beatType == iBeatType && pNode->beatsPerBar == iBeatsPerBar && pNode->beatDivisor == iBeatDivisor) iFlags &= ~UpdateNode; else iFlags |= AddNode; if (pNode && pNode->bar == iBar) iFlags &= ~AddNode; if (pNode && (pNode = pNode->next()) // real assignment && ::fabs(pNode->tempo - fTempo) < 0.05f // && pNode->beatType == iBeatType && pNode->beatsPerBar == iBeatsPerBar && pNode->beatDivisor == iBeatDivisor) iFlags &= ~AddNode; unsigned long iFrame = m_pTimeScale->frameFromBar(iBar); qtractorTimeScale::Marker *pMarker = m_pTimeScale->markers().seekFrame(iFrame); const QString& sMarkerText = m_ui.MarkerTextLineEdit->text().simplified(); const QColor& rgbMarkerColor = m_ui.MarkerTextLineEdit->palette().text().color(); if (pMarker && pMarker->frame == iFrame) { iFlags |= UpdateMarker; iFlags |= RemoveMarker; } if (pMarker && pMarker->text == sMarkerText && pMarker->color == rgbMarkerColor) iFlags &= ~UpdateMarker; else if (!sMarkerText.isEmpty()) iFlags |= AddMarker; if (pMarker && pMarker->frame == iFrame) iFlags &= ~AddMarker; return iFlags; }
void SimulatorDialog::on_btnFile_clicked() { QFileDialog dialog(this); dialog.setFileMode(QFileDialog::ExistingFile); dialog.setNameFilter(tr("Report Simulation files (*.xml)")); QStringList fileNames; if (dialog.exec()) { fileNames = dialog.selectedFiles(); QCursor c = cursor(); setCursor(Qt::WaitCursor); ui->btnStart->setEnabled(false); ui->btnPause->setEnabled(false); ui->btnStop->setEnabled(false); ui->btnFile->setEnabled(true); { QMutexLocker locker(&messagesWidgetMutex); ui->messagesWidget->clear(); ui->messagesWidget->clearContents(); ui->messagesWidget->setRowCount(0); m_numRows = 0; ui->btnFile->setEnabled(false); ui->lblMessage->setText("File Loaded"); ui->btnStart->setText("Start Simulator"); try { controller.initializeSimulator(fileNames.at(0)); setCursor(c); ui->btnStart->setEnabled(true); ui->spinBox_frequency->setValue(controller.messageFrequency()); QStringList labels; ui->messagesWidget->setColumnCount(5); labels << "Name" <<"Message ID" << "Message Action" << "Symbol ID" << "Type"; ui->messagesWidget->setHorizontalHeaderLabels(labels); ui->listWidget_timeOverrideFields->clear(); QStringList fieldNames = controller.fieldNames(); ui->listWidget_timeOverrideFields->addItems(fieldNames); for (int i = 0; i < fieldNames.length(); i++) { ui->listWidget_timeOverrideFields->item(i)->setFlags(ui->listWidget_timeOverrideFields->item(i)->flags() | Qt::ItemIsUserCheckable); ui->listWidget_timeOverrideFields->item(i)->setCheckState(Qt::Unchecked); } { QMutexLocker locker(&checkedFieldsMutex); checkedFields = QStringList(); } ui->btnFile->setEnabled(true); ui->btnStart->setEnabled(true); } catch (QString error) { QMessageBox::warning(this, "Simulator Not Initialized", error); ui->btnFile->setEnabled(true); setCursor(c); } } } }
MainWindow::MainWindow() { QMenu *fileMenu = new QMenu(tr("&File")); QAction *saveAction = fileMenu->addAction(tr("&Save...")); saveAction->setShortcut(tr("Ctrl+S")); QAction *quitAction = fileMenu->addAction(tr("E&xit")); quitAction->setShortcut(tr("Ctrl+Q")); menuBar()->addMenu(fileMenu); editor = new QTextEdit(); QTextCursor cursor(editor->textCursor()); cursor.movePosition(QTextCursor::Start); QTextFrame *mainFrame = cursor.currentFrame(); QTextCharFormat plainCharFormat; QTextCharFormat boldCharFormat; boldCharFormat.setFontWeight(QFont::Bold); /* main frame //! [0] QTextFrame *mainFrame = cursor.currentFrame(); cursor.insertText(...); //! [0] */ cursor.insertText("Text documents are represented by the " "QTextDocument class, rather than by QString objects. " "Each QTextDocument object contains information about " "the document's internal representation, its structure, " "and keeps track of modifications to provide undo/redo " "facilities. This approach allows features such as the " "layout management to be delegated to specialized " "classes, but also provides a focus for the framework.", plainCharFormat); //! [1] QTextFrameFormat frameFormat; frameFormat.setMargin(32); frameFormat.setPadding(8); frameFormat.setBorder(4); //! [1] cursor.insertFrame(frameFormat); /* insert frame //! [2] cursor.insertFrame(frameFormat); cursor.insertText(...); //! [2] */ cursor.insertText("Documents are either converted from external sources " "or created from scratch using Qt. The creation process " "can done by an editor widget, such as QTextEdit, or by " "explicit calls to the Scribe API.", boldCharFormat); cursor = mainFrame->lastCursorPosition(); /* last cursor //! [3] cursor = mainFrame->lastCursorPosition(); cursor.insertText(...); //! [3] */ cursor.insertText("There are two complementary ways to visualize the " "contents of a document: as a linear buffer that is " "used by editors to modify the contents, and as an " "object hierarchy containing structural information " "that is useful to layout engines. In the hierarchical " "model, the objects generally correspond to visual " "elements such as frames, tables, and lists. At a lower " "level, these elements describe properties such as the " "style of text used and its alignment. The linear " "representation of the document is used for editing and " "manipulation of the document's contents.", plainCharFormat); connect(saveAction, SIGNAL(triggered()), this, SLOT(saveFile())); connect(quitAction, SIGNAL(triggered()), this, SLOT(close())); setCentralWidget(editor); setWindowTitle(tr("Text Document Frames")); }
// Fill _results with the next shell of results. We may have to search several times to do // this. If _results.empty() after calling fillResults, there are no more possible results. void S2NearCursor::fillResults() { verify(_results.empty()); if (_innerRadius >= _outerRadius) { return; } if (_innerRadius > _maxDistance) { return; } // We iterate until 1. our search radius is too big or 2. we find results. do { // Some of these arguments are opaque, look at the definitions of the involved classes. FieldRangeSet frs(_details->parentNS().c_str(), makeFRSObject(), false, false); shared_ptr<FieldRangeVector> frv(new FieldRangeVector(frs, _specForFRV, 1)); scoped_ptr<BtreeCursor> cursor(BtreeCursor::make(nsdetails(_details->parentNS().c_str()), *_details, frv, 0, 1)); // Do the actual search through this annulus. size_t considered = 0; for (; cursor->ok(); cursor->advance()) { ++_nscanned; ++considered; MatchDetails details; bool matched = _matcher->matchesCurrent(cursor.get(), &details); if (!matched) { continue; } const BSONObj& indexedObj = cursor->currLoc().obj(); size_t geoFieldsInRange = 0; double minMatchingDistance = 1e20; // Calculate the distance from our query point(s) to the geo field(s). for (size_t i = 0; i < _fields.size(); ++i) { const GeoQueryField& field = _fields[i]; BSONElementSet geoFieldElements; indexedObj.getFieldsDotted(field.field, geoFieldElements); if (geoFieldElements.empty()) { continue; } S2Point us = field.getCentroid(); for (BSONElementSet::iterator oi = geoFieldElements.begin(); oi != geoFieldElements.end(); ++oi) { const BSONObj &geoObj = oi->Obj(); double dist = -1; S2Point them; if (GeoJSONParser::isPolygon(geoObj)) { S2Polygon shape; GeoJSONParser::parsePolygon(geoObj, &shape); them = shape.Project(us); } else if (GeoJSONParser::isLineString(geoObj)) { S2Polyline shape; GeoJSONParser::parseLineString(geoObj, &shape); int tmp; them = shape.Project(us, &tmp); } else if (GeoJSONParser::isPoint(geoObj)) { S2Cell point; GeoJSONParser::parsePoint(geoObj, &point); them = point.GetCenter(); } S1Angle angle(us, them); dist = angle.radians() * _params.radius; if (dist >= _innerRadius && dist <= _outerRadius) { ++geoFieldsInRange; minMatchingDistance = min(dist, minMatchingDistance); } } } if (_fields.size() == geoFieldsInRange) { if (_returned.end() == _returned.find(cursor->currLoc())) { _results.push(Result(cursor->currLoc(), cursor->currKey(), minMatchingDistance)); } } } if (_results.empty()) { _radiusIncrement *= 2; nextAnnulus(); } } while (_results.empty() && _innerRadius < M_PI * _params.radius); // TODO: consider shrinking _radiusIncrement if _results.size() meets some criteria. }
int VspGlWindow::handle(int event) { int mx = Fl::event_x(); int my = h() - Fl::event_y(); switch(event) { case FL_ENTER: focusFlag = 1; Fl::focus( this ); return Fl_Gl_Window::handle(event); // Let Base Widget process all others break; case FL_LEAVE: focusFlag = 0; cursor(FL_CURSOR_DEFAULT); return Fl_Gl_Window::handle(event); // Let Base Widget process all others break; case FL_PUSH: { for ( int i = 0 ; i < NUM_V_WIN ; i++ ) { vWin[i]->deactivate(); if ( vWin[i]->mousePress( mx, my ) ) currVWin = vWin[i]; aircraftPtr->getScreenMgr()->updateBackgroundScreen(); } Fl::focus( this ); redraw(); return 1; } case FL_RELEASE: { if ( currVWin ) { currVWin->mouseRelease( mx, my ); } redraw(); return 1; } case FL_MOVE: { if ( currVWin ) { currVWin->mouseMove( mx, my ); if (mouseTrack) { setWindowFocus(mx, my); redraw(); } } return 1; } case FL_DRAG: { if ( currVWin ) { currVWin->mouseDrag( mx, my ); } redraw(); return 1; } case FL_KEYDOWN: { return processKeyEvent(); } case FL_FOCUS : case FL_UNFOCUS : return 1; default: return Fl_Gl_Window::handle(event); // Let Base Widget process all others } return Fl_Gl_Window::handle(event); // Let Base Widget process all others }
bool SpellChecker::spellCheck() { if ((spell_checker1 == 0) && (spell_checker2 == 0)) { QPixmap icon; icon.load(":/warning.png"); QMessageBox messageBox(QMessageBox::NoIcon, "YAGF", QObject::trUtf8("Required spelling dictionary (%1) is not found.\nSpell-checking is disabled.\nTry to install an appropriate aspell dictionary.").arg(bad_language), QMessageBox::Ok, 0); messageBox.setIconPixmap(icon); messageBox.exec(); return false; } QTextCursor cursor(m_textEdit->document()); while (!cursor.isNull() && !cursor.atEnd()) { if (hasLongHyphen(&cursor)) { cursor.select(QTextCursor::WordUnderCursor); QString word1 = cursor.selectedText(); word1.truncate(word1.length()-1); cursor.movePosition(QTextCursor::NextWord); cursor.select(QTextCursor::WordUnderCursor); QString word2 = cursor.selectedText(); word1 = word1 +word2; if (checkWordSpelling(word1)) { cursor.movePosition(QTextCursor::PreviousWord); cursor.select(QTextCursor::WordUnderCursor); cursor.removeSelectedText(); cursor.select(QTextCursor::WordUnderCursor); cursor.removeSelectedText(); cursor.insertText(word1); } } cursor.select(QTextCursor::WordUnderCursor); QString word = cursor.selectedText(); if (word == QString::fromUtf8("Š²Šā")) { cursor.removeSelectedText(); cursor.insertText(QString::fromUtf8("ā")); } if (hasHyphen(&cursor)) { QString cc = checkConcatenation(&cursor); if (!cc.isEmpty()) { cursor.movePosition(QTextCursor::PreviousWord); cursor.movePosition(QTextCursor::PreviousWord); cursor.select(QTextCursor::WordUnderCursor); cursor.removeSelectedText(); cursor.select(QTextCursor::WordUnderCursor); cursor.removeSelectedText(); cursor.movePosition(QTextCursor::NextWord); cursor.select(QTextCursor::WordUnderCursor); cursor.removeSelectedText(); cursor.insertText(cc); } } _checkWord(&cursor); QTextCursor oldc = cursor; if (!cursor.movePosition(QTextCursor::NextWord, QTextCursor::MoveAnchor)) break; //cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::MoveAnchor); //cursor = m_textEdit->document()->find(*m_regExp, cursor); int oldpos = oldc.position(); int newpos = cursor.position(); if (abs(newpos - oldpos) < 3) cursor.setPosition(newpos + 1); } if (!cursor.isNull()) _checkWord(&cursor); return true; }
/** "Help message" or "About" dialog box */ HelpMessageDialog::HelpMessageDialog(QWidget* parent, bool about) : QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint), ui(new Ui::HelpMessageDialog) { ui->setupUi(this); GUIUtil::restoreWindowGeometry("nHelpMessageDialogWindow", this->size(), this); QString version = tr("Ion Core") + " " + tr("version") + " " + QString::fromStdString(FormatFullVersion()); /* On x86 add a bit specifier to the version so that users can distinguish between * 32 and 64 bit builds. On other architectures, 32/64 bit may be more ambigious. */ #if defined(__x86_64__) version += " " + tr("(%1-bit)").arg(64); #elif defined(__i386__) version += " " + tr("(%1-bit)").arg(32); #endif if (about) { setWindowTitle(tr("About Ion Core")); /// HTML-format the license message from the core QString licenseInfo = QString::fromStdString(LicenseInfo()); QString licenseInfoHTML = licenseInfo; // Make URLs clickable QRegExp uri("<(.*)>", Qt::CaseSensitive, QRegExp::RegExp2); uri.setMinimal(true); // use non-greedy matching licenseInfoHTML.replace(uri, "<a href=\"\\1\">\\1</a>"); // Replace newlines with HTML breaks licenseInfoHTML.replace("\n\n", "<br><br>"); ui->aboutMessage->setTextFormat(Qt::RichText); ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); text = version + "\n" + licenseInfo; ui->aboutMessage->setText(version + "<br><br>" + licenseInfoHTML); ui->aboutMessage->setWordWrap(true); ui->helpMessage->setVisible(false); } else { setWindowTitle(tr("Command-line options")); QString header = tr("Usage:") + "\n" + " ion-qt [" + tr("command-line options") + "] " + "\n"; QTextCursor cursor(ui->helpMessage->document()); cursor.insertText(version); cursor.insertBlock(); cursor.insertText(header); cursor.insertBlock(); std::string strUsage = HelpMessage(HMM_BITCOIN_QT); strUsage += HelpMessageGroup(tr("UI Options:").toStdString()); strUsage += HelpMessageOpt("-choosedatadir", strprintf(tr("Choose data directory on startup (default: %u)").toStdString(), DEFAULT_CHOOSE_DATADIR)); strUsage += HelpMessageOpt("-lang=<lang>", tr("Set language, for example \"de_DE\" (default: system locale)").toStdString()); strUsage += HelpMessageOpt("-min", tr("Start minimized").toStdString()); strUsage += HelpMessageOpt("-rootcertificates=<file>", tr("Set SSL root certificates for payment request (default: -system-)").toStdString()); strUsage += HelpMessageOpt("-splash", strprintf(tr("Show splash screen on startup (default: %u)").toStdString(), DEFAULT_SPLASHSCREEN)); QString coreOptions = QString::fromStdString(strUsage); text = version + "\n" + header + "\n" + coreOptions; QTextTableFormat tf; tf.setBorderStyle(QTextFrameFormat::BorderStyle_None); tf.setCellPadding(2); QVector<QTextLength> widths; widths << QTextLength(QTextLength::PercentageLength, 35); widths << QTextLength(QTextLength::PercentageLength, 65); tf.setColumnWidthConstraints(widths); QTextCharFormat bold; bold.setFontWeight(QFont::Bold); Q_FOREACH (const QString &line, coreOptions.split("\n")) { if (line.startsWith(" -")) { cursor.currentTable()->appendRows(1); cursor.movePosition(QTextCursor::PreviousCell); cursor.movePosition(QTextCursor::NextRow); cursor.insertText(line.trimmed()); cursor.movePosition(QTextCursor::NextCell); } else if (line.startsWith(" ")) { cursor.insertText(line.trimmed()+' '); } else if (line.size() > 0) { //Title of a group if (cursor.currentTable()) cursor.currentTable()->appendRows(1); cursor.movePosition(QTextCursor::Down); cursor.insertText(line.trimmed(), bold); cursor.insertTable(1, 2, tf); } } ui->helpMessage->moveCursor(QTextCursor::Start); ui->scrollArea->setVisible(false); } }
//## possibly add sizeHint parameter bool Q3SqlCursorManager::findBuffer(const QSqlIndex& idx, int atHint) { #ifdef QT_DEBUG_DATAMANAGER qDebug("Q3SqlCursorManager::findBuffer:"); #endif Q3SqlCursor* cur = cursor(); if (!cur) return false; if (!cur->isActive()) return false; if (!idx.count()) { if (cur->at() == QSql::BeforeFirst) cur->next(); return false; } QSqlRecord* buf = cur->editBuffer(); bool indexEquals = false; #ifdef QT_DEBUG_DATAMANAGER qDebug(" Checking hint..."); #endif /* check the hint */ if (cur->seek(atHint)) indexEquals = index_matches(cur, buf, idx); if (!indexEquals) { #ifdef QT_DEBUG_DATAMANAGER qDebug(" Checking current page..."); #endif /* check current page */ int pageSize = 20; int startIdx = qMax(atHint - pageSize, 0); int endIdx = atHint + pageSize; for (int j = startIdx; j <= endIdx; ++j) { if (cur->seek(j)) { indexEquals = index_matches(cur, buf, idx); if (indexEquals) break; } } } if (!indexEquals && cur->driver()->hasFeature(QSqlDriver::QuerySize) && cur->sort().count()) { #ifdef QT_DEBUG_DATAMANAGER qDebug(" Using binary search..."); #endif // binary search based on record buffer and current sort fields int lo = 0; int hi = cur->size(); int mid; if (compare_recs(buf, cur, cur->sort()) >= 0) lo = cur->at(); while (lo != hi) { mid = lo + (hi - lo) / 2; if (!cur->seek(mid)) break; if (index_matches(cur, buf, idx)) { indexEquals = true; break; } int c = compare_recs(buf, cur, cur->sort()); if (c < 0) { hi = mid; } else if (c == 0) { // found it, but there may be duplicates int at = mid; do { mid--; if (!cur->seek(mid)) break; if (index_matches(cur, buf, idx)) { indexEquals = true; break; } } while (compare_recs(buf, cur, cur->sort()) == 0); if (!indexEquals) { mid = at; do { mid++; if (!cur->seek(mid)) break; if (index_matches(cur, buf, idx)) { indexEquals = true; break; } } while (compare_recs(buf, cur, cur->sort()) == 0); } break; } else if (c > 0) { lo = mid + 1; } } } if (!indexEquals) { #ifdef QT_DEBUG_DATAMANAGER qDebug(" Using brute search..."); #endif #ifndef QT_NO_CURSOR QApplication::setOverrideCursor(Qt::WaitCursor); #endif /* give up, use brute force */ int startIdx = 0; if (cur->at() != startIdx) { cur->seek(startIdx); } for (;;) { indexEquals = false; indexEquals = index_matches(cur, buf, idx); if (indexEquals) break; if (!cur->next()) break; } #ifndef QT_NO_CURSOR QApplication::restoreOverrideCursor(); #endif } #ifdef QT_DEBUG_DATAMANAGER qDebug(" Done, result:" + QString::number(indexEquals)); #endif return indexEquals; }
// (Re)create the complete view pixmap. void qtractorMidiEditTime::updatePixmap ( int cx, int /*cy*/) { QWidget *pViewport = qtractorScrollView::viewport(); const int w = pViewport->width(); const int h = pViewport->height(); if (w < 1 || h < 1) return; const QPalette& pal = qtractorScrollView::palette(); m_pixmap = QPixmap(w, h); m_pixmap.fill(pal.window().color()); qtractorSession *pSession = qtractorSession::getInstance(); if (pSession == NULL) return; qtractorTimeScale *pTimeScale = m_pEditor->timeScale(); if (pTimeScale == NULL) return; QPainter painter(&m_pixmap); painter.initFrom(this); // // Draw the time scale... // const QFontMetrics& fm = painter.fontMetrics(); int x, x1, y1, y2 = h - 1; // Account for the editing offset: const int dx = cx + pTimeScale->pixelFromFrame(m_pEditor->offset()); qtractorTimeScale::Cursor cursor(pTimeScale); qtractorTimeScale::Node *pNode = cursor.seekPixel(dx); unsigned short iPixelsPerBeat = pNode->pixelsPerBeat(); unsigned int iBeat = pNode->beatFromPixel(dx); if (iBeat > 0) pNode = cursor.seekBeat(--iBeat); x = x1 = pNode->pixelFromBeat(iBeat) - dx; while (x < w) { const bool bBeatIsBar = pNode->beatIsBar(iBeat); if (bBeatIsBar || iPixelsPerBeat > 8) { y1 = (bBeatIsBar && x >= x1 ? 0 : fm.ascent()); painter.setPen(pal.mid().color()); painter.drawLine(x, y1, x, y2); painter.setPen(pal.light().color()); ++x; painter.drawLine(x, y1, x, y2); } if (bBeatIsBar) { y1 = fm.ascent(); if (x >= x1) { x1 = x + 2; const unsigned short iBar = pNode->barFromBeat(iBeat); const QString& sBeat = QString::number(iBar + 1); painter.setPen(pal.windowText().color()); painter.drawText(x1, y1, sBeat); x1 += fm.width(sBeat) + 2; } x1 += 2; if (iBeat == pNode->beat) { iPixelsPerBeat = pNode->pixelsPerBeat(); const QString& sTempo = QString("%1 %2/%3") .arg(pNode->tempo, 0, 'g', 3) .arg(pNode->beatsPerBar) .arg(1 << pNode->beatDivisor); painter.setPen(pal.base().color().value() < 0x7f ? pal.light().color() : pal.dark().color()); painter.drawText(x1, y1, sTempo); x1 += fm.width(sTempo) + 2; } } pNode = cursor.seekBeat(++iBeat); x = pNode->pixelFromBeat(iBeat) - dx; } // Draw location markers, if any... qtractorTimeScale::Marker *pMarker = pTimeScale->markers().seekPixel(dx); while (pMarker) { x = pTimeScale->pixelFromFrame(pMarker->frame) - dx + 4; if (x > w) break; painter.setPen(pMarker->color); painter.drawText(x, y2, pMarker->text); pMarker = pMarker->next(); } // Draw loop boundaries, if applicable... if (pSession->isLooping()) { QPolygon polyg(3); // h -= 4; const int d = (h >> 2) + 1; painter.setPen(Qt::darkCyan); painter.setBrush(Qt::cyan); x = pTimeScale->pixelFromFrame(pSession->loopStart()) - dx; if (x >= 0 && x < w) { polyg.putPoints(0, 3, x + d, h - d, x, h, x, h - d); painter.drawPolygon(polyg); } x = pTimeScale->pixelFromFrame(pSession->loopEnd()) - dx; if (x >= 0 && x < w) { polyg.putPoints(0, 3, x, h - d, x, h, x - d, h - d); painter.drawPolygon(polyg); } }
/* a < may be just a regular character, the start of an embedded html * tag, or the start of an <automatic link>. If it's an automatic * link, we also need to know if it's an email address because if it * is we need to mangle it in our futile attempt to cut down on the * spaminess of the rendered page. */ static int maybe_tag_or_link(MMIOT *f) { char *text; int c, size, i; int maybetag=1, maybeaddress=0; int mailto; if ( f->flags & INSIDE_TAG ) return 0; for ( size=0; ((c = peek(f,size+1)) != '>') && !isspace(c); size++ ) { if ( ! (c == '/' || isalnum(c) || c == '~') ) maybetag=0; if ( c == '@' ) maybeaddress=1; else if ( c == EOF ) return 0; } if ( size == 0 ) return 0; if ( maybetag || (size >= 3 && strncmp(cursor(f), "!--", 3) == 0) ) { Qstring(forbidden_tag(f) ? "<" : "<", f); while ( ((c = peek(f, 1)) != EOF) && (c != '>') ) cputc(pull(f), f); return 1; } if ( f->flags & DENY_A ) return 0; text = cursor(f); shift(f, size+1); for ( i=0; i < SZAUTOPREFIX; i++ ) if ( strncasecmp(text, autoprefix[i], strlen(autoprefix[i])) == 0 ) { Qstring("<a href=\"", f); puturl(text,size,f); Qstring("\">", f); puturl(text,size,f); Qstring("</a>", f); return 1; } if ( maybeaddress ) { Qstring("<a href=\"", f); if ( (size > 7) && strncasecmp(text, "mailto:", 7) == 0 ) mailto = 7; else { mailto = 0; /* supply a mailto: protocol if one wasn't attached */ mangle((unsigned char *)"mailto:", 7, f); } mangle((unsigned char*)text, size, f); Qstring("\">", f); mangle((unsigned char*)text+mailto, size-mailto, f); Qstring("</a>", f); return 1; } shift(f, -(size+1)); return 0; } /* maybe_tag_or_link */
void TestParser::highlightTextIL0( QTextDocument * doc) { QTextCursor cursor( doc); QString text = doc->toPlainText(); QRegExp exp("BBLOCK (\\d+)"); int index = text.indexOf( exp); while (index >= 0) { int length = exp.matchedLength(); QTextCharFormat link_fmt; //link_fmt.setFontWeight(QFont::Bold); link_fmt.setForeground(Qt::blue); link_fmt.setFontUnderline( true); link_fmt.setAnchor( true); link_fmt.setAnchorHref( exp.cap( 1)); cursor.setPosition( index); cursor.setPosition( index + length, QTextCursor::KeepAnchor); cursor.removeSelectedText(); cursor.insertText( QString( "BBLOCK %1").arg( exp.cap( 1)), link_fmt); index = text.indexOf( exp, index + length); } QRegExp pred_rx("preds:([^\\n]*)"); if ( (index = text.indexOf( pred_rx)) != -1) { int length = pred_rx.matchedLength(); int num_index = 0; cursor.setPosition( index); cursor.setPosition( index + length, QTextCursor::KeepAnchor); cursor.removeSelectedText(); QString pred_line = pred_rx.cap( 1); QTextCharFormat plain; QTextCharFormat link_fmt; //link_fmt.setFontWeight(QFont::Bold); link_fmt.setForeground(Qt::blue); link_fmt.setFontUnderline( true); link_fmt.setAnchor( true); QRegExp num_rx(" (\\d+)"); cursor.insertText( QString( "preds:"), plain); while ( (num_index = pred_line.indexOf( num_rx, num_index)) != -1) { num_index += num_rx.matchedLength(); cursor.insertText( QString( " "), plain); link_fmt.setAnchorHref( num_rx.cap( 1)); cursor.insertText( num_rx.cap( 1), link_fmt); } } QRegExp succs_rx("succs:([^\\n]*)"); if ( (index = text.indexOf( succs_rx)) != -1) { int length = succs_rx.matchedLength(); int num_index = 0; cursor.setPosition( index); cursor.setPosition( index + length, QTextCursor::KeepAnchor); cursor.removeSelectedText(); QString succ_line = succs_rx.cap( 1); QTextCharFormat plain; QTextCharFormat link_fmt; //link_fmt.setFontWeight(QFont::Bold); link_fmt.setForeground(Qt::blue); link_fmt.setFontUnderline( true); link_fmt.setAnchor( true); QRegExp num_rx(" (\\d+)"); cursor.insertText( QString( "succs:"), plain); while ( (num_index = succ_line.indexOf( num_rx, num_index)) != -1) { num_index += num_rx.matchedLength(); cursor.insertText( QString( " "), plain); link_fmt.setAnchorHref( num_rx.cap( 1)); cursor.insertText( num_rx.cap( 1), link_fmt); } } }
static void text(MMIOT *f) { int c, j; int rep; int smartyflags = 0; while ( (c = pull(f)) != EOF ) { if ( smartypants(c, &smartyflags, f) ) continue; switch (c) { case 0: break; case '>': if ( tag_text(f) ) Qstring(">", f); else Qchar(c, f); break; case '"': if ( tag_text(f) ) Qstring(""", f); else Qchar(c, f); break; case '!': if ( peek(f,1) == '[' ) { pull(f); if ( tag_text(f) || !linkylinky(1, f) ) Qstring("![", f); } else Qchar(c, f); break; case '[': if ( tag_text(f) || !linkylinky(0, f) ) Qchar(c, f); break; #if SUPERSCRIPT case '^': if ( isthisspace(f,-1) || isthisspace(f,1) ) Qchar(c,f); else { char *sup = cursor(f); int len = 0; Qstring("<sup>",f); while ( !isthisspace(f,1+len) ) { ++len; } shift(f,len); reparse(sup, len, 0, f); Qstring("</sup>", f); } break; #endif case '*': case '_': if ( tag_text(f) ) Qchar(c, f); #if RELAXED_EMPHASIS else if ( peek(f,1) == c ) { for ( rep = 1; peek(f,1) == c; pull(f) ) ++rep; Qem(f, c, rep); } else if ( (isthisspace(f,-1) && isthisspace(f,1)) || (isalnum(peek(f,-1)) && isalnum(peek(f,1))) ) Qchar(c, f); else { Qem(f, c, 1); } #else else { for (rep = 1; peek(f,1) == c; pull(f) ) ++rep; Qem(f,c,rep); } #endif break; case '`': if ( tag_text(f) ) Qchar(c, f); else { Qstring("<code>", f); if ( peek(f, 1) == '`' ) { pull(f); code(2, f); } else code(1, f); Qstring("</code>", f); } break; case '\\': switch ( c = pull(f) ) { case '&': Qstring("&", f); break; case '<': Qstring("<", f); break; case '\\': case '>': case '#': case '.': case '-': case '+': case '{': case '}': case ']': case '(': case ')': case '"': case '\'': case '!': case '[': case '*': case '_': case '`': Qchar(c, f); break; default: Qchar('\\', f); if ( c != EOF ) shift(f,-1); break; } break; case '<': if ( !maybe_tag_or_link(f) ) Qstring("<", f); break; case '&': j = (peek(f,1) == '#' ) ? 2 : 1; while ( isalnum(peek(f,j)) ) ++j; if ( peek(f,j) != ';' ) Qstring("&", f); else Qchar(c, f); break; default: Qchar(c, f); break; } }
void sch_door(POINT point[SPOTNUM],int star_fini_flag,int *point1) { int mouse_x=320,mouse_y=175,mouse_key=0; int i,flag=0; init_point(point); draw_bar(492,55,637,345,LIGHTGRAY); initmouse(492,637,55,159); cursor(mouse_x,mouse_y); while(1) { newmouse(&mouse_x,&mouse_y,&mouse_key); if(mouse_x>495&&mouse_x<635&&mouse_y>60&&mouse_y<78&&flag==1) { cursor(mouse_x,mouse_y); dis_hz(495,60,point[15].name,0,20,LIGHTRED); remark(point[15].remarks); flag=0; cursor(mouse_x,mouse_y); } if(mouse_x>495&&mouse_x<635&&mouse_y>80&&mouse_y<98&&flag==1) { cursor(mouse_x,mouse_y); remark(point[16].remarks); dis_hz(495,80,point[16].name,0,20,LIGHTRED); flag=0; cursor(mouse_x,mouse_y); } if(mouse_x>495&&mouse_x<635&&mouse_y>100&&mouse_y<118&&flag==1) { cursor(mouse_x,mouse_y); dis_hz(495,100,point[17].name,0,20,LIGHTRED); remark(point[17].remarks); flag=0; cursor(mouse_x,mouse_y); } if(mouse_x>495&&mouse_x<635&&mouse_y>120&&mouse_y<138&&flag==1) { cursor(mouse_x,mouse_y); dis_hz(495,120,point[18].name,0,20,LIGHTRED); remark(point[18].remarks); flag=0; cursor(mouse_x,mouse_y); } if(mouse_x>495&&mouse_x<635&&mouse_y>140&&mouse_y<158&&flag==1) { cursor(mouse_x,mouse_y); dis_hz(495,140,point[19].name,0,20,LIGHTRED); remark(point[19].remarks); flag=0; cursor(mouse_x,mouse_y); } if(!(mouse_x>495&&mouse_x<635&&mouse_y>60&&mouse_y<78)&&!(mouse_x>495&&mouse_x<635&&mouse_y>80&&mouse_y<98)&& !(mouse_x>495&&mouse_x<635&&mouse_y>100&&mouse_y<118)&&!(mouse_x>495&&mouse_x<635&&mouse_y>120&&mouse_y<138)&& !(mouse_x>495&&mouse_x<635&&mouse_y>140&&mouse_y<158)&&!(mouse_x>=495&&mouse_x<=635&&mouse_y>=160&&mouse_y<=240)) { flag=1; for(i=0;i<5;i++) dis_hz(495,60+20*i,point[i+15].name,0,20,WHITE); draw_bar1(495,160,634,240,LIGHTGRAY); } if(mouse_x>495&&mouse_x<635&&mouse_y>60&&mouse_y<78&&mouse_key==1) { cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); *point1=15; remark(point[15].remarks); show_sta_fin(point[15].name,star_fini_flag); break; } if(mouse_x>495&&mouse_x<635&&mouse_y>80&&mouse_y<98&&mouse_key==1) { cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); *point1=16; remark(point[16].remarks); show_sta_fin(point[16].name,star_fini_flag); break; } if(mouse_x>495&&mouse_x<635&&mouse_y>100&&mouse_y<118&&mouse_key==1) { cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); *point1=17; remark(point[17].remarks); show_sta_fin(point[17].name,star_fini_flag); break; } if(mouse_x>495&&mouse_x<635&&mouse_y>120&&mouse_y<138&&mouse_key==1) { cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); *point1=18; remark(point[18].remarks); show_sta_fin(point[18].name,star_fini_flag); break; } if(mouse_x>495&&mouse_x<635&&mouse_y>140&&mouse_y<158&&mouse_key==1) { cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); cursor(mouse_x,mouse_y); *point1=19; remark(point[19].remarks); show_sta_fin(point[19].name,star_fini_flag); break; } } }
int TextItem::fitToSize(const QSize& size, int minimumFontSize, int maximumFontSize) { int width = size.width(); int height = size.height(); const QString sizeKey = QString("%1:%2:%3:%4").arg(text()).arg(width).arg(height).arg(minimumFontSize); // for centering qreal boxHeight = -1; double ptSize = -1; if(static_autoTextSizeCache.contains(sizeKey)) { ptSize = *(static_autoTextSizeCache[sizeKey]); //qDebug()<<"TextItem::fitToSize(): size search: CACHE HIT: loaded size:"<<ptSize; // We go thru the much-more-verbose method of creating // the document and setting the html, width, merge cursor, // etc, just so we can get the document height after // setting the font size inorder to use it to center the textbox. // If we didnt nead the height, we could just use autoText->setFontSize() QTextDocument doc; doc.setTextWidth(width); if (Qt::mightBeRichText(text())) doc.setHtml(text()); else doc.setPlainText(text()); QTextCursor cursor(&doc); cursor.select(QTextCursor::Document); QTextCharFormat format; format.setFontPointSize(ptSize); cursor.mergeCharFormat(format); // force recalc of documentSize() -- see notes on why this is required in the block below doc.setHtml(doc.toHtml()); boxHeight = doc.size().height(); setText(doc.toHtml()); // We cant use this because it doesn't call doc.setTextWidth(width) //boxHeight = changeFontSize(ptSize).height(); } else { double ptSize = minimumFontSize > 0 ? minimumFontSize : findFontSize(); double sizeInc = 0.9; // how big of a jump to add to the ptSize each iteration int count = 0; // current loop iteration int maxCount = 100; // max iterations of the search loop bool done = false; double lastGoodSize = ptSize; QString lastGoodHtml = text(); double heightTmp = 0; QTextDocument doc; if (Qt::mightBeRichText(text())) doc.setHtml(text()); else doc.setPlainText(text()); doc.setTextWidth(width); QTextCursor cursor(&doc); cursor.select(QTextCursor::Document); QTextCharFormat format; bool foundGood = false; while(!done && count++ < maxCount) { format.setFontPointSize(ptSize); cursor.mergeCharFormat(format); heightTmp = doc.size().height(); if(heightTmp < height && ptSize < maximumFontSize) { lastGoodSize = ptSize; foundGood = true; sizeInc *= 1.1; //qDebug()<<"size search: "<<ptSize<<"pt was good, trying higher, inc:"<<sizeInc<<"pt, heightTmp:"<<heightTmp; ptSize += sizeInc; } else { //qDebug()<<"fitToSize: size search: last good ptsize:"<<lastGoodSize<<", stopping search, heightTmp:"<<heightTmp; done = true; } } if(!foundGood)// && minimumFontSize <= 0) // didnt find a size { ptSize = 100; count = 0; done = false; sizeInc = 1; //qDebug()<<"TextItem::fitToSize(): size search: going UP failed, now I'll try to go DOWN"; while(!done && count++ < maxCount && ptSize >= minimumFontSize) { format.setFontPointSize(ptSize); cursor.mergeCharFormat(format); heightTmp = doc.size().height(); if(heightTmp < height) { lastGoodSize = ptSize; sizeInc *= 1.1; //qDebug()<<"size search: [down] "<<ptSize<<"pt was good, trying higher, inc:"<<sizeInc<<"pt"; ptSize -= sizeInc; } else { //qDebug()<<"fitToSize: size search: [down] size search: last good ptsize:"<<lastGoodSize<<", stopping search"; done = true; } } } format.setFontPointSize(lastGoodSize); cursor.mergeCharFormat(format); setText(doc.toHtml()); // force recalc of documentSize() - otherwise the docSize is wrong for some reason... doc.setHtml(doc.toHtml()); /* Note on the above setHtml() call - when we just relied on the doc.size() (below) after calling mergCharFormat(), testing found that the height was "off" (too small) - this was found by calling TestItem::findNaturalSize() with the same with we use for this method - and it returned a height identical to the height given when we use the setHtml() call here - therefore, for some reason, this is required - I'd have to search thru Qt's sources to really understand why, but for now, it works..... */ QSizeF docSize = doc.size(); boxHeight = docSize.height(); //qDebug()<<"TextItem::fitToSize(): size search: caching ptsize:"<<lastGoodSize<<", count: "<<count<<"( minimum size was:"<<minimumFontSize<<"), docSize:"<<docSize<<", size arg:"<<size; //static_autoTextSizeCache[sizeKey] = lastGoodSize; // We are using a QCache instead of a plain QMap, so that requires a pointer value // Using QCache because the key for the cache could potentially become quite large if there are large amounts of HTML // and I dont want to just keep accumlating html in the cache infinitely static_autoTextSizeCache.insert(sizeKey, new double(lastGoodSize),1); } return (int)boxHeight; }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void Rendering::calculateOverlayItemLayout(OverlayItemRectMap* itemRectMap, OverlayItem::LayoutCorner corner, OverlayItem::LayoutDirection direction) { const int border = 3; const Vec2i vpSize = Vec2i(static_cast<int>(m_camera->viewport()->width()), static_cast<int>(m_camera->viewport()->height())); const Vec2i vpPos = Vec2i(m_camera->viewport()->x(), m_camera->viewport()->y()); Vec2i cursor(0,0); switch (corner) { case OverlayItem::TOP_LEFT: cursor.set(border, vpSize.y() - border); break; case OverlayItem::TOP_RIGHT: cursor.set(vpSize.x() - border, vpSize.y() - border); break; case OverlayItem::BOTTOM_LEFT: cursor.set(border, border); break; case OverlayItem::BOTTOM_RIGHT: cursor.set(vpSize.x() - border, border); break; default: cursor.set(border,border); } cursor += vpPos; // Adjust based on other already placed items OverlayItemRectMap::iterator it; for (it = itemRectMap->begin(); it != itemRectMap->end(); ++it) { Recti rect = it->second; if (rect.contains(cursor) && (direction == OverlayItem::VERTICAL)) { if (corner == OverlayItem::BOTTOM_LEFT || corner == OverlayItem::BOTTOM_RIGHT) { cursor.y() += rect.height() + border; } else { cursor.y() -= rect.height() + border; } } } size_t numOverlayItems = m_overlayItems.size(); size_t i; for (i = 0; i < numOverlayItems; i++) { OverlayItemLayout item = m_overlayItems.at(i); if ((item.corner == corner) && (item.direction == direction)) { CVF_ASSERT(item.overlayItem.notNull()); // Find this position and size Vec2i position = cursor; Vec2ui size = item.overlayItem->sizeHint(); if ((corner == OverlayItem::TOP_RIGHT) || (corner == OverlayItem::BOTTOM_RIGHT)) { position.x() -= size.x(); } if ((corner == OverlayItem::TOP_LEFT) || (corner == OverlayItem::TOP_RIGHT)) { position.y() -= size.y(); } // Store the position in the map Recti rect(position.x(), position.y(), static_cast<int>(size.x()), static_cast<int>(size.y())); (*itemRectMap)[item.overlayItem.p()] = rect; // Find next position, moving the cursor if (direction == OverlayItem::HORIZONTAL) { if ((corner == OverlayItem::TOP_LEFT) || (corner == OverlayItem::BOTTOM_LEFT)) { cursor.x() += (size.x() + border); } else { cursor.x() -= (size.x() + border); } } else if (direction == OverlayItem::VERTICAL) { if ((corner == OverlayItem::BOTTOM_LEFT) || (corner == OverlayItem::BOTTOM_RIGHT)) { cursor.y() += (size.y() + border); } else { cursor.y() -= (size.y() + border); } } else { CVF_FAIL_MSG("Unhandled OverlayItem::LayoutDirection"); } } } }
bool wxDynamicSashWindowLeaf::Create() { m_hscroll = new wxScrollBar(); m_vscroll = new wxScrollBar(); m_viewport = new wxWindow(); wxDynamicSashWindowImpl *add_child_target = m_impl->m_add_child_target; m_impl->m_add_child_target = NULL; bool success = m_hscroll->Create(m_impl->m_container, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL); if ( success ) success = m_vscroll->Create(m_impl->m_container, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSB_VERTICAL); if ( success ) success = m_viewport->Create(m_impl->m_container, wxID_ANY); if ( !success ) return false; m_impl->m_add_child_target = add_child_target; wxCursor cursor(wxCURSOR_ARROW); m_hscroll->SetCursor(cursor); m_vscroll->SetCursor(cursor); m_viewport->SetCursor(cursor); // the viewport must resize its child when it is itself resized, but it's // more convenient to do it in our own method instead of deriving a new // class just for this: this is why we pass this as last Connect() argument m_viewport->Connect(wxEVT_SIZE, wxSizeEventHandler(wxDynamicSashWindowLeaf::OnViewSize), NULL, this); Connect(wxEVT_DYNAMIC_SASH_REPARENT, wxEventHandler(wxDynamicSashWindowLeaf::OnReparent)); if (m_impl->m_window->GetWindowStyle() & wxDS_MANAGE_SCROLLBARS) { m_hscroll->SetEventHandler(this); m_vscroll->SetEventHandler(this); Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(wxDynamicSashWindowLeaf::OnFocus)); Connect(wxEVT_SCROLL_TOP, wxScrollEventHandler(wxDynamicSashWindowLeaf::OnScroll)); Connect(wxEVT_SCROLL_BOTTOM, wxScrollEventHandler(wxDynamicSashWindowLeaf::OnScroll)); Connect(wxEVT_SCROLL_LINEUP, wxScrollEventHandler(wxDynamicSashWindowLeaf::OnScroll)); Connect(wxEVT_SCROLL_LINEDOWN, wxScrollEventHandler(wxDynamicSashWindowLeaf::OnScroll)); Connect(wxEVT_SCROLL_PAGEUP, wxScrollEventHandler(wxDynamicSashWindowLeaf::OnScroll)); Connect(wxEVT_SCROLL_PAGEDOWN, wxScrollEventHandler(wxDynamicSashWindowLeaf::OnScroll)); Connect(wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler(wxDynamicSashWindowLeaf::OnScroll)); Connect(wxEVT_SCROLL_THUMBRELEASE, wxScrollEventHandler(wxDynamicSashWindowLeaf::OnScroll)); } wxLayoutConstraints *layout = new wxLayoutConstraints(); if (!layout) return false; wxSize size = m_hscroll->GetBestSize(); layout->left.SameAs(m_impl->m_container, wxLeft, 10); layout->right.LeftOf(m_vscroll); layout->bottom.SameAs(m_impl->m_container, wxBottom, 3); layout->height.Absolute(size.GetHeight()); m_hscroll->SetConstraints(layout); layout = new wxLayoutConstraints(); if (!layout) return false; size = m_vscroll->GetBestSize(); layout->top.SameAs(m_impl->m_container, wxTop, 10); layout->bottom.Above(m_hscroll); layout->right.SameAs(m_impl->m_container, wxRight, 3); layout->width.Absolute(size.GetWidth()); m_vscroll->SetConstraints(layout); layout = new wxLayoutConstraints(); if (!layout) return false; layout->left.SameAs(m_impl->m_container, wxLeft, 3); layout->right.LeftOf(m_vscroll); layout->top.SameAs(m_impl->m_container, wxTop, 3); layout->bottom.Above(m_hscroll); m_viewport->SetConstraints(layout); m_impl->m_container->Layout(); return true; }