void open_zoomer() { if (!bm_touchzoom) bm_touchzoom = GetResource("touchzoom", (ibitmap*) &touchzoom); th = header_font->height + 4; dw = bm_touchzoom->width + 80; dh = th + bm_touchzoom->height + menu_n_font->height + 40; dx = (ScreenWidth() - dw) / 2; dy = (ScreenHeight() - dh) / 2; isaves = BitmapFromScreen(dx, dy, dw + 4, dh + 4); DimArea(dx + 4, dy + 4, dw, dh, BLACK); new_scale = scale; new_rscale = rscale; new_reflow = reflow_mode; prevhandler = iv_seteventhandler(newzoomer_handler); if (ivstate.needupdate) { draw_new_zoomer(0); SoftUpdate(); } else { draw_new_zoomer(1); } }
void new_synopsis_note() { PrepareActiveContent(0); SynWordList* synWordList = new SynWordList[2]; memset(synWordList, 0, sizeof(SynWordList) * 2); synWordList[0].word = strdup(""); synWordList[0].x1 = 0; synWordList[0].y1 = 0; synWordList[0].x2 = 0; synWordList[0].y2 = 0; synWordList[0].pnum = cpage; synWordList[0].wnum = 1; synWordList[1].word = strdup(""); synWordList[1].x1 = ScreenWidth(); synWordList[1].y1 = ScreenHeight() - PanelHeight(); synWordList[1].x2 = ScreenWidth(); synWordList[1].y2 = ScreenHeight() - PanelHeight(); synWordList[1].pnum = cpage; synWordList[1].wnum = 2; List.Clear(); List.Add(synWordList, 2, 1); delete[] synWordList; ibitmap *bm1=NULL, *bm2=NULL; bm1 = BitmapFromScreen(0, 0, ScreenWidth(), ScreenHeight()-PanelHeight()); // bm2 = BitmapFromScreen(0, 0, ScreenWidth(), ScreenHeight()-PanelHeight()); Note = new SynopsisNote(); Note->Create((TSynopsisTOC*)&m_TOC, &List, bm1, bm2, false); // SendEvent(GetEventHandler(), EVT_SHOW, 0, 0); }
// constructor Zoomer::Zoomer(const ZoomerParameters& params, CloseHandler closeHandler) : m_PrevHandler(0) { // save area behind zoomer int xframe, yframe, wframe, hframe; GetWindowFrameRect(xframe, yframe, wframe, hframe); m_SavedArea = BitmapFromScreen(xframe, yframe, wframe, hframe); // memorize close handler m_CloseHandler = closeHandler; // create strategies s_Strategies[ZOOM_STRATEGY_PAGES] = new PagesZoomStrategy(params); s_Strategies[ZOOM_STRATEGY_FIT_WIDTH] = new FitWidthStrategy(params); s_Strategies[ZOOM_STRATEGY_MANUAL_ZOOM] = new ManualZoomStrategy(params); s_Strategies[ZOOM_STRATEGY_MANUAL_COLUMNS] = new ColumnsZoomStrategy(params); // select appropriate position if (params.optimal_zoom) { m_Position = ZOOM_STRATEGY_FIT_WIDTH; } else if (params.zoom <= 50) { m_Position = ZOOM_STRATEGY_PAGES; } else if (params.zoom >= 200) { m_Position = ZOOM_STRATEGY_MANUAL_COLUMNS; } else { m_Position = ZOOM_STRATEGY_MANUAL_ZOOM; } }
void SelectionTimer() { repaint_all(-1); ToolBar.OutputPage(BitmapFromScreen(0, 0, ScreenWidth(), ScreenHeight()-PanelHeight()), 1, updMarkerx, updMarkery, updMarkerw, updMarkerh); if (++usersleep < 50) SetHardTimer("SelectionTimer", SelectionTimer, 25); else MarkerHandler(EVT_POINTERUP, lastx, lasty); }
void OpenMarkerMenu(PBSynopsisItem *item) { // Prepare page and open marker menu if (item != NULL) { int spi, sei, sci, epi, eei, eci; PBSynopsisMarker *marker = (PBSynopsisMarker *)item; selectingMarker = false; ClearTimer(SelectionTimer); unpack_position(marker->GetLongPosition(), &spi, &sei, &sci); unpack_position(marker->GetEndLongPosition(), &epi, &eei, &eci); bookview->selectionModel().SetSelection(spi, sei, sci, epi, eei, eci); repaint_all(-1); ToolBar.OutputPage(BitmapFromScreen(0, 0, ScreenWidth(), ScreenHeight()-PanelHeight())); ToolBar.OpenMarkerMenu(marker); bookview->selectionModel().clear(); } }
int MarkerHandler(int type, int par1, int par2) { if (type == EVT_POINTERDOWN) { selectingMarker = true; restore_current_position(); mainApplication->refreshWindow(); bookview->selectionModel().clear(); bookview->selectionModel().activate(par1 - imgposx, par2 - imgposy); SetHardTimer("SelectionTimer", SelectionTimer, 250); selMarkery1 = selMarkery2 = lasty = par2; lastx = par1; usersleep = 0; } else if (type == EVT_POINTERMOVE) { if (++trailMarker > 8) { if (selectingMarker) { lastx = par1; lasty = par2; bookview->selectionModel().extendTo(par1 - imgposx, par2 - imgposy); selMarkery2 = par2; usersleep = 0; } trailMarker = 0; } } else if (type == EVT_POINTERUP) { if (!selectingMarker) return 0; selectingMarker = false; ClearTimer(SelectionTimer); restore_current_position(); mainApplication->refreshWindow(); bookview->selectionModel().extendTo(par1 - imgposx, par2 - imgposy); long long spos, epos; bool clickOnly, emptyText; GetSelectionInfo(&spos, &epos, &emptyText, &clickOnly); if ((clickOnly && SynTOC.GetMarkerByPos(spos) != NULL) || emptyText) { OpenMarkerMenu(SynTOC.GetMarkerByPos(spos)); } else { MergeMarkers(spos, epos); bookview->selectionModel().clear(); repaint_all(-2); ToolBar.OutputPage(BitmapFromScreen(0, 0, ScreenWidth(), ScreenHeight()-PanelHeight()), 2, updMarkerx, updMarkery, updMarkerw, updMarkerh); } } else if (type == EVT_POINTERHOLD || type == EVT_POINTERLONG) { restore_current_position(); mainApplication->refreshWindow(); bookview->selectionModel().extendTo(par1 - imgposx, par2 - imgposy); long long spos, epos; bool clickOnly, emptyText; GetSelectionInfo(&spos, &epos, &emptyText, &clickOnly); if (clickOnly || emptyText) { OpenMarkerMenu(SynTOC.GetMarkerByPos(spos)); } } return 0; }