struct AVLNode *_rotateRight(struct AVLNode *cur){ struct AVLNode *newTop; newTop = cur->left; cur->left = newTop->rght; newTop->rght = cur; _setHeight(cur); _setHeight(newTop); return newTop; }
struct AVLNode *_rotateLeft(struct AVLNode *cur) { struct AVLNode *newTop; newTop = cur->rght; cur->rght = newTop->left; newTop->left = cur; /* reset the heights for all nodes that have changed heights*/ _setHeight(cur); _setHeight(newTop); return newTop; }
/* * call-seq: * marshal_load(array) -> nil * * Provides marshalling support for use by the Marshal library. * * */ DLL_LOCAL VALUE _marshal_load(VALUE self, VALUE data) { data = rb_Array(data); _setWidth(self, RARRAY_AREF(data,0)); _setHeight(self, RARRAY_AREF(data,1)); return Qnil; }
void AP_UnixDialog_PageSetup::event_LandscapeChanged(void) { std::string sHeight = gtk_entry_get_text(GTK_ENTRY(m_entryPageHeight)); std::string sWidth = gtk_entry_get_text(GTK_ENTRY(m_entryPageWidth)); _setWidth(sHeight.c_str()); _setHeight(sWidth.c_str()); g_signal_handler_block(G_OBJECT(m_entryPageWidth), m_iEntryPageWidthID); g_signal_handler_block(G_OBJECT(m_entryPageHeight), m_iEntryPageHeightID); gtk_entry_set_text( GTK_ENTRY(m_entryPageWidth),sHeight.c_str() ); gtk_entry_set_text( GTK_ENTRY(m_entryPageHeight),sWidth.c_str() ); g_signal_handler_unblock(G_OBJECT(m_entryPageWidth), m_iEntryPageWidthID); g_signal_handler_unblock(G_OBJECT(m_entryPageHeight), m_iEntryPageHeightID); /* switch layout XPM image */ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (m_radioPageLandscape))) { gtk_widget_destroy(customPreview); customPreview = create_pixmap (m_PageHbox, orient_horizontal_xpm); gtk_widget_show (customPreview); gtk_box_pack_start (GTK_BOX (m_PageHbox), customPreview, FALSE, FALSE, 0); gtk_box_reorder_child (GTK_BOX (m_PageHbox), customPreview, 0); } else { gtk_widget_destroy(customPreview); customPreview = create_pixmap (m_PageHbox, orient_vertical_xpm); gtk_widget_show (customPreview); gtk_box_pack_start (GTK_BOX (m_PageHbox), customPreview, FALSE, FALSE, 0); gtk_box_reorder_child (GTK_BOX (m_PageHbox), customPreview, 0); } }
void AP_UnixDialog_PageSetup::doHeightEntry(void) { UT_UTF8String sAfter = gtk_entry_get_text(GTK_ENTRY(m_entryPageHeight)); m_PageSize.Set(fp_PageSize::psCustom , getPageUnits()); _setHeight(sAfter.utf8_str()); { XAP_GtkSignalBlocker b(G_OBJECT(m_entryPageHeight), m_iEntryPageHeightID); int pos = gtk_editable_get_position(GTK_EDITABLE(m_entryPageHeight)); gtk_entry_set_text( GTK_ENTRY(m_entryPageHeight),sAfter.utf8_str() ); gtk_editable_set_position(GTK_EDITABLE(m_entryPageHeight), pos); } _updatePageSizeList(); }
void AP_UnixDialog_PageSetup::event_PageSizeChanged (fp_PageSize::Predefined pd) { fp_PageSize ps(pd); if( TRUE != gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (m_radioPagePortrait))) { ps.setLandscape(); } m_PageSize = ps; // change the units in the dialog, too. UT_Dimension new_units = ps.getDims(); setPageUnits(new_units); XAP_comboBoxSetActiveFromIntCol(GTK_COMBO_BOX (m_optionPageUnits), 1, new_units); float w, h; w = ps.Width (new_units); h = ps.Height (new_units); // if( !ps.isPortrait()) // { // h = ps.Width (new_units); // w = ps.Height (new_units); // } if (true /* fp_PageSize::psCustom != pd */) { // set entry values for a non-custom pagesize gchar * val; XAP_GtkSignalBlocker b(G_OBJECT(m_entryPageWidth), m_iEntryPageWidthID); XAP_GtkSignalBlocker c(G_OBJECT(m_entryPageHeight), m_iEntryPageHeightID); val = g_strdup_printf (FMT_STRING, w); _setWidth(val); gtk_entry_set_text (GTK_ENTRY (m_entryPageWidth), val); g_free (val); val = g_strdup_printf (FMT_STRING, h); _setHeight(val); gtk_entry_set_text (GTK_ENTRY (m_entryPageHeight), val); g_free (val); } else { UT_Dimension dim = (UT_Dimension)XAP_comboBoxGetActiveInt(GTK_COMBO_BOX(m_optionPageUnits)); ps.Set(atof(gtk_entry_get_text(GTK_ENTRY(m_entryPageWidth))), atof(gtk_entry_get_text(GTK_ENTRY(m_entryPageHeight))), dim); } }
struct AVLNode *_balance(struct AVLNode *cur) { /*compute the balance factor for the node*/ int cbf = _bf(cur); if (cbf < -1) { /* cur is heavy on the left */ if (_bf(cur->left) > 0) /* Check for double rotation. ie. is the leftChild heavy on the right */ cur->left = _rotateLeft(cur->left); /*yes, left child was heavy on right, so rotate child left first */ return _rotateRight(cur); /* Rotate cur to the right*/ }else if (cbf > 1) { if (_bf(cur->rght) < 0) cur->rght = _rotateRight(cur->rght); return _rotateLeft(cur); } /* Once rotation is done, we must set the heights appropriately */ _setHeight(cur); return cur; }
void fp_AnnotationRun::_lookupProperties(const PP_AttrProp * pSpanAP, const PP_AttrProp * pBlockAP, const PP_AttrProp * pSectionAP, GR_Graphics * pG) { FL_DocLayout * pLayout = getBlock()->getDocLayout(); const GR_Font * pFont = pLayout->findFont(pSpanAP,pBlockAP,pSectionAP,pG); if(pFont == NULL) { pFont = pLayout->findFont(pSpanAP,pBlockAP,pSectionAP,getGraphics()); UT_ASSERT_HARMLESS(pFont); } if (pFont != _getFont()) { _setFont(pFont); _setAscent(getGraphics()->getFontAscent(pFont)); _setDescent(getGraphics()->getFontDescent(pFont)); _setHeight(getGraphics()->getFontHeight(pFont)); } }
void fp_EmbedRun::_lookupProperties(const PP_AttrProp * pSpanAP, const PP_AttrProp * /*pBlockAP*/, const PP_AttrProp * /*pSectionAP*/, GR_Graphics * pG) { UT_return_if_fail(pSpanAP != NULL); UT_DEBUGMSG(("fp_EmbedRun _lookupProperties span %p \n",pSpanAP)); m_pSpanAP = pSpanAP; m_bNeedsSnapshot = true; pSpanAP->getAttribute("dataid", m_pszDataID); const gchar * pszEmbedType = NULL; pSpanAP->getProperty("embed-type", pszEmbedType); UT_ASSERT(pszEmbedType); UT_DEBUGMSG(("Embed Type %s \n",pszEmbedType)); bool bFontChanged = false; // Load this into EmbedView // LUCA: chunk of code moved up here from the bottom of the method // 'cause we need to retrieve the font-size const PP_AttrProp * pBlockAP = NULL; const PP_AttrProp * pSectionAP = NULL; FL_DocLayout * pLayout = getBlock()->getDocLayout(); if(pG == NULL && pLayout->isQuickPrint() ) { pG = getGraphics(); if((m_iEmbedUID >= 0) && getEmbedManager()) { getEmbedManager()->releaseEmbedView(m_iEmbedUID); m_iEmbedUID = -1; } m_iEmbedUID = -1; } getBlockAP(pBlockAP); const GR_Font * pFont = pLayout->findFont(pSpanAP,pBlockAP,pSectionAP,pG); if(pLayout->isQuickPrint() && pG->queryProperties(GR_Graphics::DGP_PAPER)) { if(m_iEmbedUID >= 0 ) { getEmbedManager()->releaseEmbedView(m_iEmbedUID); m_iEmbedUID = -1; } m_iEmbedUID = - 1; m_pEmbedManager = m_pDocLayout->getQuickPrintEmbedManager(pszEmbedType); } else { m_pEmbedManager = m_pDocLayout->getEmbedManager(pszEmbedType); } if (pFont != _getFont()) { _setFont(pFont); bFontChanged = true; } if(pG == NULL) pG = getGraphics(); m_iPointHeight = pG->getFontAscent(pFont) + pG->getFontDescent(pFont); const char* pszSize = PP_evalProperty("font-size",pSpanAP,pBlockAP,pSectionAP, getBlock()->getDocument(), true); // LUCA: It is fundamental to do this before the EmbedView object // gets destroyed to avoid resuscitating it UT_sint32 iWidth,iAscent,iDescent=0; if(m_iEmbedUID < 0) { PD_Document * pDoc = getBlock()->getDocument(); m_iEmbedUID = getEmbedManager()->makeEmbedView(pDoc,m_iIndexAP,m_pszDataID); UT_DEBUGMSG((" EmbedRun %p UID is %d \n",this,m_iEmbedUID)); getEmbedManager()->initializeEmbedView(m_iEmbedUID); getEmbedManager()->setRun (m_iEmbedUID, this); getEmbedManager()->loadEmbedData(m_iEmbedUID); } getEmbedManager()->setDefaultFontSize(m_iEmbedUID,atoi(pszSize)); if (bFontChanged) bFontChanged = getEmbedManager()->setFont(m_iEmbedUID,pFont); if(getEmbedManager()->isDefault()) { iWidth = _getLayoutPropFromObject("width"); iAscent = _getLayoutPropFromObject("ascent"); iDescent = _getLayoutPropFromObject("descent"); } else { const char * pszHeight = NULL; bool bFoundHeight = pSpanAP->getProperty("height", pszHeight) && !bFontChanged; const char * pszWidth = NULL; bool bFoundWidth = pSpanAP->getProperty("width", pszWidth) && !bFontChanged; const char * pszAscent = NULL; bool bFoundAscent = pSpanAP->getProperty("ascent", pszAscent); if(!bFoundWidth || pszWidth == NULL) { iWidth = getEmbedManager()->getWidth(m_iEmbedUID); } else { iWidth = UT_convertToLogicalUnits(pszWidth); if(iWidth <= 0) { iWidth = getEmbedManager()->getWidth(m_iEmbedUID); } } if(!bFoundHeight || pszHeight == NULL || !bFoundAscent || pszAscent == NULL) { iAscent = getEmbedManager()->getAscent(m_iEmbedUID); iDescent = getEmbedManager()->getDescent(m_iEmbedUID); } else { iAscent = UT_convertToLogicalUnits(pszAscent); if(iAscent <= 0) { iAscent = getEmbedManager()->getAscent(m_iEmbedUID); iDescent = getEmbedManager()->getDescent(m_iEmbedUID); } else { UT_sint32 iHeight = UT_convertToLogicalUnits(pszHeight); const char * pszDescent = NULL; bool bFoundDescent = pSpanAP->getProperty("descent", pszDescent); if (bFoundDescent && pszDescent != NULL && iHeight >= 0) { iDescent = UT_convertToLogicalUnits(pszDescent); if (iHeight != iAscent + iDescent) iAscent = iHeight * iAscent / (iAscent + iDescent); } iDescent = (iHeight >= iAscent)? iHeight - iAscent: 0; } } } UT_DEBUGMSG(("Width = %d Ascent = %d Descent = %d \n",iWidth,iAscent,iDescent)); fl_DocSectionLayout * pDSL = getBlock()->getDocSectionLayout(); fp_Page * p = NULL; if(pDSL->getFirstContainer()) { p = pDSL->getFirstContainer()->getPage(); } else { p = pDSL->getDocLayout()->getNthPage(0); } UT_sint32 maxW = p->getWidth() - UT_convertToLogicalUnits("0.1in"); UT_sint32 maxH = p->getHeight() - UT_convertToLogicalUnits("0.1in"); maxW -= pDSL->getLeftMargin() + pDSL->getRightMargin(); maxH -= pDSL->getTopMargin() + pDSL->getBottomMargin(); markAsDirty(); if(getLine()) { getLine()->setNeedsRedraw(); } if(iAscent < 0) { iAscent = 0; } if(iDescent < 0) { iDescent = 0; } _setAscent(iAscent); _setDescent(iDescent); _setWidth(iWidth); _setHeight(iAscent+iDescent); _updatePropValuesIfNeeded(); }