本文整理汇总了C++中FV_View::getPoint方法的典型用法代码示例。如果您正苦于以下问题:C++ FV_View::getPoint方法的具体用法?C++ FV_View::getPoint怎么用?C++ FV_View::getPoint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FV_View
的用法示例。
在下文中一共展示了FV_View::getPoint方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: bl_doclistener_insertEndFrame
bool fl_FrameLayout::bl_doclistener_insertEndFrame(fl_ContainerLayout*,
const PX_ChangeRecord_Strux * pcrx,
PL_StruxDocHandle sdh,
PL_ListenerId lid,
void (* pfnBindHandles)(PL_StruxDocHandle sdhNew,
PL_ListenerId lid,
PL_StruxFmtHandle sfhNew))
{
// The endFrame strux actually needs a format handle to to this Frame layout.
// so we bind to this layout.
PL_StruxFmtHandle sfhNew = static_cast<PL_StruxFmtHandle>(this);
pfnBindHandles(sdh,lid,sfhNew);
//
// increment the insertion point in the view.
//
FV_View* pView = m_pLayout->getView();
if (pView && (pView->isActive() || pView->isPreview()))
{
pView->setPoint(pcrx->getPosition() + fl_BLOCK_STRUX_OFFSET);
}
else if(pView && pView->getPoint() > pcrx->getPosition())
{
pView->setPoint(pView->getPoint() + fl_BLOCK_STRUX_OFFSET);
}
if(pView)
pView->updateCarets(pcrx->getPosition(),1);
m_bHasEndFrame = true;
return true;
}
示例2: bl_doclistener_insertEndEmbed
bool fl_EmbedLayout::bl_doclistener_insertEndEmbed(fl_ContainerLayout*,
const PX_ChangeRecord_Strux * pcrx,
pf_Frag_Strux* sdh,
PL_ListenerId lid,
void (* pfnBindHandles)(pf_Frag_Strux* sdhNew,
PL_ListenerId lid,
fl_ContainerLayout* sfhNew))
{
// The endFootnote strux actually needs a format handle to to this Footnote layout.
// so we bind to this layout.
fl_ContainerLayout* sfhNew = this;
pfnBindHandles(sdh,lid,sfhNew);
//
// increment the insertion point in the view.
//
FV_View* pView = m_pLayout->getView();
if (pView && (pView->isActive() || pView->isPreview()))
{
pView->setPoint(pcrx->getPosition() + fl_BLOCK_STRUX_OFFSET);
}
else if(pView && pView->getPoint() > pcrx->getPosition())
{
pView->setPoint(pView->getPoint() + fl_BLOCK_STRUX_OFFSET);
}
m_bHasEndFootnote = true;
fl_BlockLayout * pBL = static_cast<fl_BlockLayout *>(getFirstLayout());
pBL->updateEnclosingBlockIfNeeded();
return true;
}
示例3: if
gint AP_UnixLeftRuler::_fe::button_release_event(GtkWidget * w, GdkEventButton * e)
{
// a static function
AP_UnixLeftRuler * pUnixLeftRuler = static_cast<AP_UnixLeftRuler *>(g_object_get_data(G_OBJECT(w), "user_data"));
EV_EditModifierState ems = 0;
EV_EditMouseButton emb = 0;
FV_View * pView = static_cast<FV_View *>(pUnixLeftRuler->m_pFrame->getCurrentView());
if (!pView || pView->getPoint() == 0 || !pUnixLeftRuler->m_pG)
return 1;
if (e->state & GDK_SHIFT_MASK)
ems |= EV_EMS_SHIFT;
if (e->state & GDK_CONTROL_MASK)
ems |= EV_EMS_CONTROL;
if (e->state & GDK_MOD1_MASK)
ems |= EV_EMS_ALT;
if (e->state & GDK_BUTTON1_MASK)
emb = EV_EMB_BUTTON1;
else if (e->state & GDK_BUTTON2_MASK)
emb = EV_EMB_BUTTON2;
else if (e->state & GDK_BUTTON3_MASK)
emb = EV_EMB_BUTTON3;
pUnixLeftRuler->mouseRelease(ems, emb,
pUnixLeftRuler->m_pG->tlu(static_cast<UT_uint32>(e->x)),
pUnixLeftRuler->m_pG->tlu(static_cast<UT_uint32>(e->y)));
// release the mouse after we are done.
gtk_grab_remove(w);
return 1;
}
示例4: insertBlockAfter
/*!
* This code actually inserts a block AFTER the frame in the docsectionlayout
* Code copied from tablelayout
*/
bool fl_FrameLayout::insertBlockAfter(fl_ContainerLayout* /*pLBlock*/,
const PX_ChangeRecord_Strux * pcrx,
PL_StruxDocHandle sdh,
PL_ListenerId lid,
void (* pfnBindHandles)(PL_StruxDocHandle sdhNew,
PL_ListenerId lid,
PL_StruxFmtHandle sfhNew))
{
UT_ASSERT(pcrx->getType()==PX_ChangeRecord::PXT_InsertStrux);
UT_ASSERT(pcrx->getStruxType()==PTX_Block);
fl_ContainerLayout * pNewCL = NULL;
fl_ContainerLayout * pMyCL = myContainingLayout();
pNewCL = pMyCL->insert(sdh,this,pcrx->getIndexAP(), FL_CONTAINER_BLOCK);
fl_BlockLayout * pBlock = static_cast<fl_BlockLayout *>(pNewCL);
//
// Set the sectionlayout of this frame to that of the block since it is that scope
//
pBlock->setSectionLayout(static_cast<fl_SectionLayout *>(myContainingLayout()));
pNewCL->setContainingLayout(myContainingLayout());
// Must call the bind function to complete the exchange of handles
// with the document (piece table) *** before *** anything tries
// to call down into the document (like all of the view
// listeners).
PL_StruxFmtHandle sfhNew = static_cast<PL_StruxFmtHandle>(pNewCL);
pfnBindHandles(sdh,lid,sfhNew);
//
// increment the insertion point in the view.
//
FV_View* pView = m_pLayout->getView();
if (pView && (pView->isActive() || pView->isPreview()))
{
pView->setPoint(pcrx->getPosition() + fl_BLOCK_STRUX_OFFSET);
}
else if(pView && pView->getPoint() > pcrx->getPosition())
{
pView->setPoint(pView->getPoint() + fl_BLOCK_STRUX_OFFSET);
}
if(pView)
pView->updateCarets(pcrx->getPosition(),1);
return true;
}
示例5: _parseStream
/*!
Parse stream contents into the document
\param stream Stream to import from
This code is used for both files and the clipboard
*/
UT_Error IE_Imp_Object::_parseStream(ImportStream * pStream)
{
UT_return_val_if_fail(pStream, UT_ERROR);
XAP_Frame *pFrame = XAP_App::getApp()->getLastFocussedFrame();
FV_View* pView = static_cast<FV_View*>(pFrame->getCurrentView());
UT_UCSChar c;
unsigned char uc;
while (pStream->getChar(c))
{
uc = static_cast<unsigned char>(c);
m_pByteBuf->append(&uc,1);
}
const char* mimetypeGOChart = "application/x-goffice-graph";
const char * szProps="embed-type: GOChart";
PT_DocPosition pos = pView->getPoint();
pView->cmdInsertEmbed(m_pByteBuf,pView->getPoint(),mimetypeGOChart,szProps);
pView->cmdSelect(pos,pos+1);
return UT_OK;
}
示例6: _createPreviewFromGC
void AP_Dialog_Paragraph::_createPreviewFromGC(GR_Graphics * gc,
UT_uint32 width,
UT_uint32 height)
{
UT_return_if_fail (gc);
// g_free any attached preview
DELETEP(m_paragraphPreview);
// platform's runModal should have set this
UT_return_if_fail (m_pFrame);
AV_View * baseview = m_pFrame->getCurrentView();
UT_return_if_fail (baseview);
FV_View * view = static_cast<FV_View *> (baseview);
FL_DocLayout * dl = view->getLayout();
UT_return_if_fail (dl);
fl_BlockLayout * bl = dl->findBlockAtPosition((PT_DocPosition) view->getPoint());
UT_return_if_fail (bl);
UT_GrowBuf gb;
bool hadMem = bl->getBlockBuf(&gb);
UT_UCSChar * tmp = NULL;
if (hadMem && gb.getLength() > 0)
{
gb.truncate(NUM_CHARS_FOR_SAMPLE);
UT_UCS4_cloneString(&tmp, (UT_UCSChar *) gb.getPointer(0));
}
else
{
const XAP_StringSet * pSS = m_pApp->getStringSet();
// if the paragraph was empty, use our sample
UT_UCS4_cloneString_char(&tmp, pSS->getValue(AP_STRING_ID_DLG_Para_PreviewSampleFallback));
}
m_paragraphPreview = new AP_Preview_Paragraph(gc, tmp, this);
FREEP(tmp);
UT_return_if_fail (m_paragraphPreview);
m_paragraphPreview->setWindowSize(width, height);
// TODO : any setup of the GC for drawing
}
示例7:
/*!
* Background abi repaint function.
\param XAP_UnixFrame * p pointer to the Frame that initiated this background
repainter.
*/
gint AP_UnixLeftRuler::_fe::abi_expose_repaint( gpointer p)
{
//
// Grab our pointer so we can do useful stuff.
//
UT_Rect localCopy;
AP_UnixLeftRuler * pR = static_cast<AP_UnixLeftRuler *>(p);
GR_Graphics * pG = pR->getGraphics();
if(pG == NULL || pG->isDontRedraw())
{
//
// Come back later
//
return TRUE;
}
FV_View * pView = static_cast<FV_View *>(pR->m_pFrame->getCurrentView());
if(pView && pView->getPoint()==0)
{
//
// Come back later
//
return TRUE;
}
pG->setSpawnedRedraw(true);
if(pG->isExposePending())
{
while(pG->isExposedAreaAccessed())
{
UT_usleep(10); // 10 microseconds
}
pG->setExposedAreaAccessed(true);
localCopy.set(pG->getPendingRect()->left,pG->getPendingRect()->top,
pG->getPendingRect()->width,pG->getPendingRect()->height);
//
// Clear out this set of expose info
//
pG->setExposePending(false);
pG->setExposedAreaAccessed(false);
xxx_UT_DEBUGMSG(("Painting area on Left ruler: left=%d, top=%d, width=%d, height=%d\n", localCopy.left, localCopy.top, localCopy.width, localCopy.height));
xxx_UT_DEBUGMSG(("SEVIOR: Repaint now \n"));
pR->draw(&localCopy);
}
//
// OK we've finshed. Wait for the next signal
//
pG->setSpawnedRedraw(false);
return TRUE;
}
示例8:
//
// AbiMathView_FileInsert
// -------------------
// This is the function that we actually call to insert the MathML.
//
bool
AbiMathView_FileInsert(AV_View* /*v*/, EV_EditMethodCallData* /*d*/)
{
// Get the current view that the user is in.
XAP_Frame *pFrame = XAP_App::getApp()->getLastFocussedFrame();
FV_View* pView = static_cast<FV_View*>(pFrame->getCurrentView());
PD_Document * pDoc = static_cast<PD_Document *>(pFrame->getCurrentDoc());
char* pNewFile = NULL;
bool bOK = s_AskForMathMLPathname(pFrame,&pNewFile);
if (!bOK || !pNewFile)
{
UT_DEBUGMSG(("ARRG! bOK = %d pNewFile = %s \n",bOK,pNewFile));
return false;
}
UT_UTF8String sNewFile = pNewFile;
// we own storage for pNewFile and must free it.
FREEP(pNewFile);
UT_DEBUGMSG(("fileInsertMathML: loading [%s]\n",sNewFile.utf8_str()));
IE_Imp_MathML * pImpMathML = new IE_Imp_MathML(pDoc, pMathManager->EntityTable());
UT_Error errorCode = pImpMathML->importFile(sNewFile.utf8_str());
if (errorCode != UT_OK)
{
s_CouldNotLoadFileMessage(pFrame, sNewFile.utf8_str(), errorCode);
DELETEP(pImpMathML);
return false;
}
/* Create the data item */
UT_uint32 uid = pDoc->getUID(UT_UniqueId::Image);
UT_UTF8String sUID;
UT_UTF8String_sprintf(sUID,"%d",uid);
pDoc->createDataItem(sUID.utf8_str(), false, pImpMathML->getByteBuf(),
"application/mathml+xml", NULL);
/* Insert the MathML Object */
PT_DocPosition pos = pView->getPoint();
pView->cmdInsertMathML(sUID.utf8_str(),pos);
DELETEP(pImpMathML);
return true;
}
示例9: notifyActiveFrame
void AP_UnixDialog_FormatFrame::notifyActiveFrame(XAP_Frame *_pFrame)
{
UT_ASSERT(m_windowMain);
ConstructWindowName();
gtk_window_set_title (GTK_WINDOW (m_windowMain), m_WindowName);
setAllSensitivities();
FV_View * pView = static_cast<FV_View *>(_pFrame->getCurrentView());
if(pView && pView->isInFrame(pView->getPoint()))
{
fl_BlockLayout * pBL = pView->getCurrentBlock();
fl_FrameLayout * pFrame = static_cast<fl_FrameLayout *>(pBL->myContainingLayout());
if(pFrame->getContainerType() != FL_CONTAINER_FRAME)
{
UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN);
return;
}
if(pFrame->getFrameWrapMode() >= FL_FRAME_WRAPPED_TO_RIGHT)
{
setWrapping(true);
}
else
{
setWrapping(false);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_wWrapButton),getWrapping());
if(positionMode() == FL_FRAME_POSITIONED_TO_BLOCK)
{
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( m_wPosParagraph),TRUE);
}
else if(positionMode() == FL_FRAME_POSITIONED_TO_COLUMN)
{
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_wPosColumn),TRUE);
}
else if(positionMode() == FL_FRAME_POSITIONED_TO_PAGE)
{
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_wPosPage),TRUE);
}
}
}
示例10: _draw
void fp_AnnotationRun::_draw(dg_DrawArgs* pDA)
{
if(!displayAnnotations())
return;
if(!m_bIsStart)
return;
GR_Graphics * pG = pDA->pG;
UT_sint32 xoff = 0, yoff = 0;
GR_Painter painter(pG);
// need screen locations of this run
getLine()->getScreenOffsets(this, xoff, yoff);
UT_sint32 iYdraw = pDA->yoff - getAscent()-1;
UT_uint32 iRunBase = getBlock()->getPosition() + getBlockOffset();
//
// Sevior was here
// UT_sint32 iFillTop = iYdraw;
UT_sint32 iFillTop = iYdraw+1;
UT_sint32 iFillHeight = getAscent() + getDescent();
FV_View* pView = _getView();
UT_uint32 iSelAnchor = pView->getSelectionAnchor();
UT_uint32 iPoint = pView->getPoint();
UT_uint32 iSel1 = UT_MIN(iSelAnchor, iPoint);
UT_uint32 iSel2 = UT_MAX(iSelAnchor, iPoint);
UT_ASSERT(iSel1 <= iSel2);
bool bIsInTOC = getBlock()->isContainedByTOC();
if (
isInSelectedTOC() || (!bIsInTOC && (
/* pView->getFocus()!=AV_FOCUS_NONE && */
(iSel1 <= iRunBase)
&& (iSel2 > iRunBase)))
)
{
UT_RGBColor color(_getView()->getColorSelBackground());
pG->setColor(_getView()->getColorAnnotation(this));
painter.fillRect(color, pDA->xoff, iFillTop, getWidth(), iFillHeight);
}
else
{
Fill(getGraphics(),pDA->xoff, iFillTop, getWidth(), iFillHeight);
pG->setColor(_getColorFG());
}
pG->setFont(_getFont());
pG->setColor(_getView()->getColorAnnotation(this));
UT_DEBUGMSG(("Drawing string m_sValue %s \n",m_sValue.utf8_str()));
painter.drawChars(m_sValue.ucs4_str().ucs4_str(), 0,m_sValue.ucs4_str().size(), pDA->xoff,iYdraw, NULL);
//
// Draw underline/overline/strikethough
//
UT_sint32 yTopOfRun = pDA->yoff - getAscent()-1; // Hack to remove
//character dirt
drawDecors( xoff, yTopOfRun,pG);
}
示例11: UT_DefWindowProc
LRESULT CALLBACK AP_Win32TopRuler::_TopRulerWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
// this is a static member function.
AP_Win32TopRuler * pRuler = GWL(hwnd);
if (!pRuler)
return UT_DefWindowProc(hwnd, iMsg, wParam, lParam);
GR_Win32Graphics * pG = static_cast<GR_Win32Graphics *>(pRuler->m_pG);
switch (iMsg)
{
case WM_LBUTTONDOWN:
SetCapture(hwnd);
pRuler->mousePress(s_GetEMS(wParam),EV_EMB_BUTTON1,pG->tlu(LOWORD(lParam)),pG->tlu(HIWORD(lParam)));
{
pG->handleSetCursorMessage();
}
return 0;
case WM_MBUTTONDOWN:
SetCapture(hwnd);
pRuler->mousePress(s_GetEMS(wParam),EV_EMB_BUTTON2,pG->tlu(LOWORD(lParam)),pG->tlu(HIWORD(lParam)));
{
pG->handleSetCursorMessage();
}
return 0;
case WM_RBUTTONDOWN:
SetCapture(hwnd);
pRuler->mousePress(s_GetEMS(wParam),EV_EMB_BUTTON3,
pG->tlu(LOWORD(lParam)),pG->tlu(HIWORD(lParam)));
{
pG->handleSetCursorMessage();
}
return 0;
case WM_MOUSEMOVE:
{
// HACK for not updating Ruler for incremental Loading
FV_View * pView = (FV_View *) pRuler->getView();
if(pView && (pView->getPoint() == 0))
{
return 0;
}
}
pRuler->mouseMotion(s_GetEMS(wParam),pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam)));
pRuler->isMouseOverTab(pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam)));
return 0;
case WM_LBUTTONUP:
pRuler->mouseRelease(s_GetEMS(wParam),EV_EMB_BUTTON1,pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam)));
ReleaseCapture();
return 0;
case WM_MBUTTONUP:
pRuler->mouseRelease(s_GetEMS(wParam),EV_EMB_BUTTON2,pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam)));
ReleaseCapture();
return 0;
case WM_RBUTTONUP:
pRuler->mouseRelease(s_GetEMS(wParam),EV_EMB_BUTTON3,pG->tlu(signedLoWord(lParam)),pG->tlu(signedHiWord(lParam)));
ReleaseCapture();
return 0;
case WM_PAINT:
{
// HACK for not updating Ruler for incremental Loading
FV_View * pView = (FV_View *) pRuler->getView();
if(pView && (pView->getPoint() == 0))
{
return 0;
}
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
UT_return_val_if_fail(hdc, 0);
UT_Rect r(pG->tlu(ps.rcPaint.left),
pG->tlu(ps.rcPaint.top),
pG->tlu(ps.rcPaint.right-ps.rcPaint.left+1),
pG->tlu(ps.rcPaint.bottom-ps.rcPaint.top+1));
pRuler->draw(&r);
EndPaint(hwnd,&ps);
return 0;
}
case WM_SYSCOLORCHANGE:
{
pG->init3dColors();
return 0;
}
case WM_SETCURSOR:
{
pG->handleSetCursorMessage();
return 0;
}
//.........这里部分代码省略.........
示例12: myByteBuf
static void
changed_cb (GOComponent *component, gpointer data)
{
if (data != NULL)
{
GOComponentView * pGOComponentView = static_cast<GOComponentView*> (data);
pGOComponentView->update ();
}
else
{
XAP_Frame *pFrame = XAP_App::getApp()->getLastFocussedFrame();
FV_View* pView = static_cast<FV_View*>(pFrame->getCurrentView());
UT_Byte *buf;
int length;
void (*clearfunc) (gpointer);
gpointer user_data = NULL;
if (go_component_get_data (component, (void**) &buf, &length, &clearfunc, &user_data)) {
if (buf && length) {
UT_ByteBufPtr myByteBuf(new UT_ByteBuf);
myByteBuf->append(buf, length);
UT_String Props="embed-type: GOComponent";
guint i, nbprops;
GType prop_type;
GValue value = G_VALUE_INIT;
char *prop = NULL;
GParamSpec **specs = g_object_class_list_properties (
G_OBJECT_GET_CLASS (component), &nbprops);
for (i = 0; i < nbprops; i++) {
if (specs[i]->flags & GO_PARAM_PERSISTENT) {
prop_type = G_PARAM_SPEC_VALUE_TYPE (specs[i]);
memset(&value, 0, sizeof(value));
g_value_init (&value, prop_type);
g_object_get_property (G_OBJECT (component), specs[i]->name, &value);
if (!g_param_value_defaults (specs[i], &value))
switch (G_TYPE_FUNDAMENTAL (prop_type)) {
case G_TYPE_CHAR:
case G_TYPE_UCHAR:
case G_TYPE_BOOLEAN:
case G_TYPE_INT:
case G_TYPE_UINT:
case G_TYPE_LONG:
case G_TYPE_ULONG:
case G_TYPE_FLOAT:
case G_TYPE_DOUBLE: {
GValue str;
memset(&str, 0, sizeof(str));
g_value_init (&str, G_TYPE_STRING);
g_value_transform (&value, &str);
prop = g_strdup (g_value_get_string (&str));
g_value_unset (&str);
break;
}
case G_TYPE_STRING: {
prop = g_strdup (g_value_get_string (&value));
break;
}
default:
prop = NULL;
break;
}
g_value_unset (&value);
if (prop) {
Props += UT_String_sprintf("; %s:%s", specs[i]->name, prop);
g_free (prop);
prop = NULL;
}
}
}
PT_DocPosition pos = pView->getPoint();
pView->cmdInsertEmbed(myByteBuf, pView->getPoint(), component->mime_type, Props.c_str ());
pView->cmdSelect(pos,pos+1);
}
if (clearfunc)
clearfunc ((user_data)? user_data: buf);
}
g_object_unref (component); // destroy since we created a new one this will close the editor
}
}
示例13: _draw
void fp_EmbedRun::_draw(dg_DrawArgs* pDA)
{
GR_Graphics *pG = pDA->pG;
#if 0
UT_DEBUGMSG(("Draw with class %x \n",pG));
UT_DEBUGMSG(("Contents of fp EmbedRun \n %s \n",m_sEmbedML.utf8_str()));
#endif
FV_View* pView = _getView();
UT_return_if_fail(pView);
// need to draw to the full height of line to join with line above.
UT_sint32 xoff= 0, yoff=0, DA_xoff = pDA->xoff;
getLine()->getScreenOffsets(this, xoff, yoff);
// need to clear full height of line, in case we had a selection
UT_sint32 iFillHeight = getLine()->getHeight();
UT_sint32 iFillTop = pDA->yoff - getLine()->getAscent();
UT_uint32 iSelAnchor = pView->getSelectionAnchor();
UT_uint32 iPoint = pView->getPoint();
UT_uint32 iSel1 = UT_MIN(iSelAnchor, iPoint);
UT_uint32 iSel2 = UT_MAX(iSelAnchor, iPoint);
UT_ASSERT(iSel1 <= iSel2);
UT_uint32 iRunBase = getBlock()->getPosition() + getOffsetFirstVis();
// Fill with background, then redraw.
UT_sint32 iLineHeight = getLine()->getHeight();
bool bIsSelected = false;
if ( !pG->queryProperties(GR_Graphics::DGP_PAPER) &&
(isInSelectedTOC() || (iSel1 <= iRunBase && iSel2 > iRunBase))
)
{
// Need the painter lock to be released at the end of this block
GR_Painter painter(pG);
painter.fillRect(_getView()->getColorSelBackground(), /*pDA->xoff*/DA_xoff, iFillTop, getWidth(), iFillHeight);
bIsSelected = true;
getEmbedManager()->setColor(m_iEmbedUID,_getView()->getColorSelForeground());
}
else
{
Fill(getGraphics(),pDA->xoff, pDA->yoff - getAscent(), getWidth()+getGraphics()->tlu(1), iLineHeight+getGraphics()->tlu(1));
getEmbedManager()->setColor(m_iEmbedUID,getFGColor());
}
UT_Rect rec;
rec.left = pDA->xoff;
rec.top = pDA->yoff;
rec.height = getHeight();
rec.width = getWidth();
if(getEmbedManager()->isDefault())
{
rec.top -= _getLayoutPropFromObject("ascent");
}
UT_DEBUGMSG(("Draw Embed object top %d \n",rec.top));
getEmbedManager()->render(m_iEmbedUID,rec);
if(m_bNeedsSnapshot && !getEmbedManager()->isDefault() && getGraphics()->queryProperties(GR_Graphics::DGP_SCREEN) )
{
UT_Rect myrec = rec;
myrec.top -= getAscent();
if(!bIsSelected)
{
getEmbedManager()->makeSnapShot(m_iEmbedUID,myrec);
m_bNeedsSnapshot = false;
}
}
if(bIsSelected)
{
UT_Rect myrec = rec;
if(!getEmbedManager()->isDefault())
{
myrec.top -= getAscent();
}
_drawResizeBox(myrec);
}
}
示例14: setCurCellProps
void AP_Dialog_FormatTable::setCurCellProps(void)
{
XAP_Frame *frame = XAP_App::getApp()->getLastFocussedFrame();
if (frame) {
FV_View * pView = static_cast<FV_View *>(frame->getCurrentView());
if (m_bSettingsChanged ||
m_iOldPos == pView->getPoint()) // comparing the actual cell pos would be even better; but who cares :)
return;
m_iOldPos = pView->getPoint();
/*
* update the border colors
*/
gchar * color = NULL;
if (pView->getCellProperty("left-color", color))
m_vecProps.addOrReplaceProp("left-color", color);
else
m_vecProps.removeProp("left-color");
if (pView->getCellProperty("right-color", color))
m_vecProps.addOrReplaceProp("right-color", color);
else
m_vecProps.removeProp("right-color");
if (pView->getCellProperty("top-color", color))
m_vecProps.addOrReplaceProp("top-color", color);
else
m_vecProps.removeProp("top-color");
if (pView->getCellProperty("bot-color", color))
m_vecProps.addOrReplaceProp("bot-color", color);
else
m_vecProps.removeProp("bot-color");
/*
* update the background color
*/
UT_RGBColor clr;
gchar * bgColor = NULL;
if (pView->getCellProperty("background-color", bgColor))
{
m_vecProps.addOrReplaceProp("background-color", bgColor);
clr.setColor(bgColor);
setBackgroundColorInGUI(clr);
}
else
{
m_vecProps.removeProp("background-color");
setBackgroundColorInGUI(UT_RGBColor(255,255,255)); // No color == white for now - MARCM
}
if(pView->isImageAtStrux(m_iOldPos,PTX_SectionCell))
{
if(pView->isInTable())
{
fl_BlockLayout * pBL = pView->getCurrentBlock();
fl_CellLayout * pCell = static_cast<fl_CellLayout *>(pBL->myContainingLayout());
if(pCell->getContainerType() != FL_CONTAINER_CELL)
{
UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN);
DELETEP(m_pGraphic);
DELETEP(m_pImage);
m_sImagePath.clear();
}
else
{
FG_Graphic * pFG = FG_GraphicRaster::createFromStrux(pCell);
if(pFG)
{
DELETEP(m_pGraphic);
DELETEP(m_pImage);
m_sImagePath.clear();
m_pGraphic = pFG;
m_sImagePath = pFG->getDataId();
GR_Graphics * pG = m_pFormatTablePreview->getGraphics();
const UT_ByteBuf * pBB = pFG->getBuffer();
if(m_pGraphic->getType() == FGT_Raster)
{
m_pImage = static_cast<GR_Image *>(
pG->createNewImage( m_sImagePath.c_str(),
pBB, pFG->getMimeType(),
pFG->getWidth(),
pFG->getHeight(),
GR_Image::GRT_Raster));
}
else
{
m_pImage = static_cast<GR_Image *>(
pG->createNewImage( m_sImagePath.c_str(),
pBB, pFG->getMimeType(),
m_pFormatTablePreview->getWindowWidth()-2,
m_pFormatTablePreview->getWindowHeight()-2,
GR_Image::GRT_Vector));
}
//.........这里部分代码省略.........
示例15: setAllSensitivities
/*!
* This method sets the sensitivity of the radio buttons to above/below/left/right merges
* Because we can't merge to the left of column zero for example.
*
* Call this right after contructing the widget and before dropping into the main loop.
*/
void AP_Dialog_SplitCells::setAllSensitivities(void)
{
FV_View * pView = 0;
if (XAP_Frame * pFrame = getApp()->getLastFocussedFrame())
{
pView = static_cast<FV_View *>(pFrame->getCurrentView());
}
if (!pView)
{
setSensitivity(vert_above, false);
setSensitivity(vert_mid, false);
setSensitivity(vert_below, false);
setSensitivity(hori_left, false);
setSensitivity(hori_mid, false);
setSensitivity(hori_right, false);
return;
}
if (!pView->isInTable())
{
setSensitivity(vert_above, false);
setSensitivity(vert_mid, false);
setSensitivity(vert_below, false);
setSensitivity(hori_left, false);
setSensitivity(hori_mid, false);
setSensitivity(hori_right, false);
return;
}
PT_DocPosition iCurPos = pView->getPoint();
m_iCellSource = iCurPos;
pView->getCellParams(iCurPos,&m_iLeft,&m_iRight,&m_iTop,&m_iBot);
//
// Now find the number of rows and columns inthis table. This is easiest to
// get from the table container
//
fl_BlockLayout * pBL = pView->getLayout()->findBlockAtPosition(iCurPos);
fp_Run * pRun;
UT_sint32 xPoint,yPoint,xPoint2,yPoint2,iPointHeight;
bool bDirection;
pRun = pBL->findPointCoords(iCurPos, false, xPoint,
yPoint, xPoint2, yPoint2,
iPointHeight, bDirection);
UT_return_if_fail(pRun);
fp_Line * pLine = pRun->getLine();
UT_return_if_fail(pLine);
fp_Container * pCon = pLine->getContainer();
UT_return_if_fail(pCon);
fp_TableContainer * pTab = static_cast<fp_TableContainer *>(pCon->getContainer());
UT_return_if_fail(pTab);
UT_return_if_fail(pTab->getContainerType() == FP_CONTAINER_TABLE);
m_pTab = pTab;
m_iNumRows = pTab->getNumRows();
m_iNumCols = pTab->getNumCols();
if(m_iBot > m_iTop+2)
{
setSensitivity(vert_above,true);
setSensitivity(vert_below,true);
}
else
{
setSensitivity(vert_above,false);
setSensitivity(vert_below,false);
}
UT_sint32 diff = m_iBot - m_iTop;
if((m_iBot - m_iTop == 1) || (2*(diff/2) == diff))
{
setSensitivity(vert_mid,true);
}
else
{
setSensitivity(vert_mid,false);
}
if(m_iRight > m_iLeft+2)
{
setSensitivity(hori_left,true);
setSensitivity(hori_right,true);
}
else
{
setSensitivity(hori_left,false);
setSensitivity(hori_right,false);
}
diff = m_iRight - m_iLeft;
if((m_iRight - m_iLeft == 1) || (2*(diff/2) == diff))
{
setSensitivity(hori_mid,true);
}
else
{
//.........这里部分代码省略.........