На главную

© Ольшевский Андрей Георгиевич

Консультирую по скайп: da.irk.ru

Сайт super-code.ru наполняется бесплатными материалами

Программирование графики в OpenOffice и LibreOffice


Программирование графики в приложениях OpenOffice и Libreoffice: XdrawPagesSupplier

Установка размеров точечного рисунка (Bitmap) [1; стр. 203]

Если Вы загружаете изображение, его размер может оказаться не тем, какой Вам нужен. Первым указал мне на эту проблему Vance Lankhaar. Его первое решение создавало очень маленькое изображение.

Листинг: Вставить GraphicObjectShape.

'Author: Vance Lankhaar

'email: vlankhaar@linux.ca

Dim oDesktop As Object, oDoc As Object

Dim mNoArgs()

Dim sGraphicURL As String

Dim sGraphicService As String, sUrl As String

Dim oDrawPages As Object, oDrawPage As Object

Dim oGraphic As Object

sGraphicURL = "http://api.openoffice.org/branding/images/logonew.gif"

sGraphicService = "com.sun.star.drawing.GraphicObjectShape"

sUrl = "private:factory/simpress"

oDesktop = createUnoService("com.sun.star.frame.Desktop")

oDoc = oDesktop.loadComponentFromURL(sUrl,"_default",0,mNoArgs())

oDrawPages = oDoc.DrawPages

oDrawPage = oDrawPages.insertNewByIndex(1)

oGraphic = oDoc.createInstance(sGraphicService)

oGraphic.GraphicURL = sGraphicURL

oDrawPage.add(oGraphic)

Первое решение (автор Laurent Godard) устанавливает размер изображения в максимально допустимый размер.

Листинг: Установить для изображения максимальный поддерживаемый размер.

'Maximum size, lose the aspect ration.

Dim TheSize As New com.sun.star.awt.Size

Dim TheBitmapSize As New com.sun.star.awt.Size

Dim TheBitmap as object

Dim xmult as double, ymult as double



TheBitmap=oGraphic.GraphicObjectFillBitmap

TheBitmapSize=TheBitmap.GetSize



xmult=TwipsPerPixelX/567*10*100

ymult=TwipsPerPixelY/567*10*100



TheSize.width=TheBitmapSize.width*xmult

TheSize.height=TheBitmapSize.height*ymult



oGraphic.setsize(TheSize)

Vance Lankhaar дал окончательное решение, которое максимизирует размер, но сохраняет пропорции изображения.

Листинг: Установить максимальный размер изображения при сохранении пропорций.

oBitmap = oGraphic.GraphicObjectFillBitmap

aBitmapSize = oBitMap.GetSize

iWidth = aBitmapSize.Width

iHeight = aBitmapSize.Height



iPageWidth = oDrawPage.Width

iPageHeight = oDrawPage.Height

dRatio = CDbl(iHeight) / CDbl(iWidth)

dPageRatio = CDbl(iPageHeight) / CDbl(iPageWidth)



REM This is is fit-maximum-dimension

REM s/</>/ for fit-minimum-dimension

If (dRatio < dPageRatio) Then

aSize.Width = iPageWidth

aSize.Height = CInt(CDbl(iPageWidth) * dRatio)

Else

aSize.Width = CInt(CDbl(iPageHeight) / dRatio)

aSize.Height = iPageHeight

End If



aPosition.X = (iPageWidth - aSize.Width)/2

aPosition.Y = (iPageHeight - aSize.Height)/2



oGraphic.SetSize(aSize)

oGraphic.SetPosition(aPosition)

Draw и Impress

Листинги программ на языке OpenOffice.org Basic и рисунки далее из книги Andrew D. Pitonyak "OpenOffice.org Macros Explained" от 2 января 2015 г [2] представлены с переводом комментариев в скобках.

Listing 288. Export each graphics page to a JPG (экспорт каждой графической страницы в JPG).

oFilter=CreateUnoService("com.sun.star.drawing.GraphicExportFilter")

Dim args(1) as new com.sun.star.beans.PropertyValue

For i=0 to oDoc.getDrawPages().getcount()-1

oPage = oDoc.getDrawPages().getByIndex(i)

name = oPage.name

oFilter.setSourceDocument(oPage)

args(0).Name = "URL"

args(0).Value = "file:///c|/"&oPage.name&".JPG"

args(1).Name = "MediaType"

args(1).Value = "image/jpeg"

oFilter.filter(args())

Next

Listing 289. Add a proportionally sized graphic to a draw page (добавление пропорционального размера графики в страницу рисунка).

Sub AddProportionalGraphic

Dim oDoc 'Newly created Impress document

Dim oDrawPage 'The draw page that will contain the graphic image

Dim oGraph 'The created graphic image

REM Create an Impress presentation document!

oDoc = StarDesktop.loadComponentFromURL("private:factory/simpress",_

"_default", 0, Array())

REM Insert a second draw page if desired,

REM leaving the first draw page untouched!

REM Could use the property DrawPages

REM oDrawPage = oDoc.DrawPages.insertNewByIndex(1)

REM oDrawPage = oDoc.getDrawPages().insertNewByIndex(1)

REM In this case, simply use the first draw page!

oDrawPage = oDoc.getDrawPages().getByIndex(0)

REM Create a graphics object that can be inserted into the document

oGraph = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")

REM Set the URL of the image so that it can be added to the document

oGraph.GraphicURL = "http://www.openoffice.org/images/AOO_logos/orb.jpg"

oDrawPage.add(oGraph)

REM If I stop here, there will be a very small graphic image in the

REM upper-left corner of the document. This is pretty much useless.

REM Although I could simply size the graphic to the same size as the bitmap

REM size, I choose instead to size this so that it is as large as possible

REM without changing the aspect ratio.

REM Determine the ratio of the height to the width for the image and

REM also for the draw page.

Dim oNewSize As New com.sun.star.awt.Size 'New Image size

Dim oBitmapSize As New com.sun.star.awt.Size 'Bitmap size

Dim dImageRatio As Double 'Ratio of the height to width

Dim dPageRatio As Double 'Ratio of the height to width

oBitmapSize = oGraph.GraphicObjectFillBitmap.GetSize

dImageRatio = CDbl(oBitmapSize.Height) / CDbl(oBitmapSize.Width)

dPageRatio = CDbl(oDrawPage.Height) / CDbl(oDrawPage.Width)

REM Compare the ratios to see which is wider, relatively speaking

If dPageRatio > dImageRatio Then

oNewSize.Width = oDrawPage.Width

oNewSize.Height = CLng(CDbl(oDrawPage.Width) * dImageRatio)

Else

oNewSize.Width = CLng(CDbl(oDrawPage.Height) / dImageRatio)

oNewSize.Height = oDrawPage.Height

End If



REM Center the image on the Impress page!

Dim oPosition as new com.sun.star.awt.Point

oPosition.X = (oDrawPage.Width - oNewSize.Width)/2

oPosition.Y = (oDrawPage.Height - oNewSize.Height)/2

oGraph.SetSize(oNewSize)

oGraph.SetPosition(oPosition)

End Sub

Listing 290. Draw lines in a new graphic document (рисование линий в новом графическом документе (см. рисунок 1)).

Sub DrawLinesInDrawDocument

Dim oDoc 'Newly created Draw document

Dim oDrawPage 'The draw page that will contain the graphics image

Dim oShape 'Shape to insert



REM Create a new Draw document!

oDoc = StarDesktop.loadComponentFromURL("private:factory/sdraw",_

"_default", 0, Array())

REM Use the first draw page

oDrawPage = oDoc.getDrawPages().getByIndex(0)

Dim i As Long

Dim oPos as new com.sun.star.awt.Point

Dim oSize as new com.sun.star.awt.Size

Dim dStepSize As Double

dStepSize = CDbl(oDrawPage.Height) / 10

For i = 0 To 10

oShape = oDoc.createInstance("com.sun.star.drawing.LineShape")

oShape.LineColor = rgb(0, 255 - 20 * i, 20 * i)

oShape.LineWidth = 250

oPos.X = 0

oPos.Y = CLng(CDbl(i) * dStepSize)

oShape.setPosition(oPos)

oSize.width = oDrawPage.Width

oSize.height= oDrawPage.Height - 2 * oPos.Y

oShape.setSize(oSize)

oDrawPage.add(oShape)

Next

End Sub

Рисунок 1. These lines drawn in a Draw document overlap (линии, наложенные на Draw документ)

Графика в электронных таблицах Calc

Listing 291. Draw lines in a Calc document (рисование линий в документе Calc (см. рисунок 2)).

Sub InsertLineInCalcDocument

Dim oLine

Dim oCell1

Dim oCell2

Dim oSheet



Dim oPos as new com.sun.star.awt.Point

Dim oSize as new com.sun.star.awt.Size

Dim oPage



oSheet = ThisComponent.Sheets(0)

oCell1 = oSheet.getCellByPosition(1, 1)

oCell2 = oSheet.getCellByPosition(3, 3)



oLine = ThisComponent.createInstance("com.sun.star.drawing.LineShape")

oPos.x = oCell1.Position.X

oPos.y = oCell1.Position.Y

oLine.Position = oPos



oSize.Width = oCell2.Position.X - oCell1.Position.X

oSize.Height = oCell2.Position.Y - oCell1.Position.Y

oLine.Size = oSize

oLine.LineWidth = 4

oLine.LineColor = RGB(128, 0, 0)

oPage = oSheet.getDrawPage()



oPage.add(oLine)

REM You must do this AFTER inserting the line into the page.

oLine.LineEndName = "Arrow"

oLine.LineStartName = "Double Arrow"

End Sub

Рисунок 2. Draw a line in a Calc document (рисование линии в Calc документе)

Листинг: Вставить изображение и расположить его в документе OOo Calc [1; стр. 207] (вставляет изображение с таким путем

sGraphicURL = "file:///C:/Program Files (x86)/LibreOffice 4/share/gallery/bullets/blkpearl.gif").

Sub InsertAndPositionGraphic

REM Get the sheet

Dim vSheet

vSheet = ThisComponent.Sheets(0)



REM Add the graphics object

Dim oDesktop As Object, oDoc As Object

Dim mNoArgs()

Dim sGraphicURL As String

Dim sGraphicService As String, sUrl As String

Dim oDrawPages As Object, oDrawPage As Object

Dim oGraphic As Object

sGraphicURL = "file:///OOo/share/gallery/bullets/blkpearl.gif"

sGraphicService = "com.sun.star.drawing.GraphicObjectShape"

oDrawPage = vSheet.getDrawPage()

oGraphic = ThisComponent.createInstance(sGraphicService)

oGraphic.GraphicURL = sGraphicURL

oDrawPage.add(oGraphic)



REM Size the object

Dim TheSize As New com.sun.star.awt.Size

TheSize.width=400

TheSize.height=400

oGraphic.setsize(TheSize)



REM Position the object

Dim aPosition As New com.sun.star.awt.Point

aPosition.X = 2540

aPosition.Y = 2540

oGraphic.setposition(aPosition)

End Sub

Листинг: Экспортировать текущую страницу как графический объект указанного размера [1; стр. 209].

Sub ExportCurrentPageOrSelection

REM Filter dependent filter properties

Dim aFilterData (4) As New com.sun.star.beans.PropertyValue

Dim sFileUrl As String



aFilterData(0).Name = "PixelWidth"

aFilterData(0).Value = 1000

aFilterData(1).Name = "PixelHeight"

aFilterData(1).Value = 1000

aFilterData(2).Name ="LogicalWidth"

aFilterData(2).Value = 1000

aFilterData(3).Name ="LogicalHeight"

aFilterData(3).Value = 1000

aFilterData(4).Name ="Quality"

aFilterData(4).Value = 60



sFileUrl = "file:///d:/test2.jpg"



REM A smart person would force this to be a Draw or Impress document

xDoc = ThisComponent

xView = xDoc.currentController

xSelection = xView.selection

If isEmpty( xSelection ) Then

xObj = xView.currentPage

Else

xObj = xSelection

End If

Export( xObj, sFileUrl, aFilterData() )

End Sub



Sub Export( xObject, sFileUrl As String, aFilterData )

Dim xExporter



xExporter = createUnoService( "com.sun.star.drawing.GraphicExportFilter" )

xExporter.SetSourceDocument( xObject )



Dim aArgs (2) As New com.sun.star.beans.PropertyValue

Dim aURL As New com.sun.star.util.URL



aURL.complete = sFileUrl

aArgs(0).Name = "MediaType"

aArgs(0).Value = "image/jpeg"

aArgs(1).Name = "URL"

aArgs(1).Value = aURL

aArgs(2).Name = "FilterData"

aArgs(2).Value = aFilterData

xExporter.filter( aArgs() )

End Sub

Следующий макрос работает в Draw, Impress и Calc.

Листинг: Нарисовать линию в документе OOo Calc [1; стр. 211] (рабочая программа).

Sub DrawLineInCalcDocument

Dim xPage as object, xDoc as object, xShape as object

Dim aPosition As New com.sun.star.awt.Point

Dim TheSize As New com.sun.star.awt.Size



xDoc = thiscomponent

xPage = xDoc.DrawPages(0)

xShape = xDoc.createInstance( "com.sun.star.drawing.LineShape" )

xShape.LineColor = rgb( 255, 0, 0 )

xShape.LineWidth = 100

aPosition.X = 2500

aPosition.Y = 2500

xShape.setPosition(aPosition)

TheSize.width = 2500

TheSize.height=5000

xShape.setSize(TheSize)

xPage.add( xShape )

End Sub

Графика в текстовом редакторе Writer

Ниже представлен перевод некоторых предложений из книги [3].

Each Writer document contains a single draw page for the entire document. Каждый документ Writer содержит одну страницу рисования для всего документа.

In Writer, the page is like a transparent layer containing drawing data on top of the standard document data. В Writer эта страница подобно прозрачному слою содержит рисуемые данные в верхней части стандартных данных документа.

Writer documents do not support the XDrawPagesSupplier interface, because they only contain a single draw page. Документы Writer не поддерживают интерфейс XDrawPagesSupplier, потому что они содержат только одну нарисованную страницу.

They do, however, support the XDrawPageSupplier interface, which defines the single object method getDrawPage(). Они, однако, поддерживают интерфейс XDrawPageSupplier, который определяет один объект Метод getDrawPage ().

The macro in Listing 290 uses optional draw page properties — namely height and width. Макрос в листинге 290 использует дополнительные свойства страницы — а именно высоту и ширину.

The draw page from a Writer document does not contain these properties. На странице рисования в документе Writer не содержится этих свойств.

The draw page in a Writer document has other peculiarities, however. Страница рисования в документе Writer имеет другие особенности, однако.

For example, adding lines to the draw page — as done in Listing 290 — adds them as characters at the cursor position rather than interpreting the positions as specific locations in the document. Например, добавление строк на страницу рисования - как это было сделано в листинге 290 - добавляет их в качестве символов в позиции курсора, а не позиции конкретных мест в документе.

The macro in Listing 292 draws lines to demonstrate this behavior (also see Figure 86). Макрос в листинге 292 рисует линии, чтобы продемонстрировать такое поведение (также см Рисунок 86).

Следующий листинг очень похож на листинг «Draw lines in a new graphic document» выше. На стр 555 [2 от 02.01.2015] Shapes подробно.

Listing 292. Draw lines in a Write document [2; стр. 316] (рисование линий в документе Write (см. рисунок 3)).

Sub DrawLinesInWriteDocument

Dim oDoc 'Newly created Writer document

'(вновь созданный Writer документ)

Dim oDrawPage 'The draw page that will contain the graphics image

'(рисуемая страница, которая будет содержать графическое изображение)

Dim oShape 'Shape to insert (фигура для вставки)



REM Create a new Writer document (создание нового Writer документа)

oDoc = StarDesktop.loadComponentFromURL("private:factory/swriter",_

"_default", 0, Array())

oDrawPage = oDoc.getDrawPage()

Dim i As Long

Dim oSize as new com.sun.star.awt.Size

Dim dStepSize As Double

dStepSize = 800

For i = 0 To 10

oShape = oDoc.createInstance("com.sun.star.drawing.LineShape")

oShape.LineColor = rgb(255, 255 - 20 * i, 20 * i)

oShape.LineWidth = 50

oSize.width = dStepSize - CLng(CDbl(i) * dStepSize / 10)/2

oSize.width = CLng(dStepSize/5 * i - dStepSize)

oSize.height= dStepSize

oShape.setSize(oSize)

oDrawPage.add(oShape)

Next

End Sub

Рисунок 3. Эти линии, нарисованные в документе Writer, рассматриваются как символы

Коды для рисования разных фигур

' oShape = oDoc.createInstance("com.sun.star.drawing.EllipseShape")

' Размеры:

' oShape = oDoc.createInstance("com.sun.star.drawing.MeasureShape")

' A series of Bezier lines

'oShape = oDoc.createInstance("com.sun.star.drawing.OpenBezierShape")

' PolyLinePathShape

'oShape = oDoc.createInstance("com.sun.star.drawing.PolyLinePathShape")

' Прямоугольники

'oShape = oDoc.createInstance("com.sun.star.drawing.RectangleShape")

' Прямоугольники

'oShape = oDoc.createInstance("com.sun.star.drawing.RectangleShape")

' Display a graphic object such as a bitmap image

'oShape = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")

Listing 343. Insert a Graphics as a link at the start of the document (вставка графики, как ссылки при загрузке документа).

Sub InsertGraphicObject(oDoc, sURL$)

Dim oCursor

Dim oGraph

Dim oText



oText = oDoc.getText()

oCursor = oText.createTextCursor()

oCursor.goToStart(FALSE)

oGraph = oDoc.createInstance("com.sun.star.text.GraphicObject")



With oGraph

.GraphicURL = sURL

.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER

.Width = 6000

.Height = 8000

End With



'now insert the image into the text document

oText.insertTextContent( oCursor, oGraph, False )

End Sub

Listing 344. Guess image size (оценка размера изображения).

Function RecommendGraphSize(oGraph)

Dim oSize

Dim lMaxW As Double ' Maximum width in 100th mm

Dim lMaxH As Double ' Maximum height in 100th mm



lMaxW = 6.75 * 2540 ' 6.75 inches

lMaxH = 9.5 * 2540 ' 9.5 inches

If IsNull(oGraph) OR IsEmpty(oGraph) Then

Exit Function

End If

oSize = oGraph.Size100thMM

If oSize.Height = 0 OR oSize.Width = 0 Then

' 2540 is 25.40 mm in an inch, but I need 100th mm.

' There are 1440 twips in an inch

oSize.Height = oGraph.SizePixel.Height * 2540.0 * TwipsPerPixelY() / 1440

oSize.Width = oGraph.SizePixel.Width * 2540.0 * TwipsPerPixelX() / 1440

End If

If oSize.Height = 0 OR oSize.Width = 0 Then

'oSize.Height = 2540

'oSize.Width = 2540

Exit Function

End If

If oSize.Width > lMaxW Then

oSize.Height = oSize.Height * lMaxW / oSize.Width

oSize.Width = lMaxW

End If

If oSize.Height > lMaxH Then

oSize.Width = oSize.Width * lMaxH / oSize.Height

oSize.Height = lMaxH

End If

RecommendGraphSize = oSize

End Function

Listing 345. Embed an image in a document (вставка изображения в документ).

' oDoc - document to contain the image.

' oCurs - Cursor where the image is added

' sURL - URL of the image to insert.

' sParStyle - set the paragraph style to this.

Sub EmbedGraphic(oDoc, oCurs, sURL$, sParStyle$)

Dim oShape

Dim oGraph 'The graphic object is text content.

Dim oProvider 'GraphicProvider service.

Dim oText



oShape = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")

oGraph = oDoc.createInstance("com.sun.star.text.GraphicObject")



oDoc.getDrawPage().add(oShape)



oProvider = createUnoService("com.sun.star.graphic.GraphicProvider")



Dim oProps(0) as new com.sun.star.beans.PropertyValue

oProps(0).Name = "URL"

oProps(0).Value = sURL



REM Save the original size.

Dim oSize100thMM

Dim lHeight As Long

Dim lWidth As Long

oSize100thMM = RecommendGraphSize(oProvider.queryGraphicDescriptor(oProps))

If NOT IsNull(oSize100thMM) AND NOT IsEmpty(oSize100thMM) Then

lHeight = oSize100thMM.Height

lWidth = oSize100thMM.Width

End If



oShape.Graphic = oProvider.queryGraphic(oProps())

oGraph.graphicurl = oShape.graphicurl

oGraph.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER

oText= oCurs.getText()

oText.insertTextContent(oCurs, oGraph, false)

oDoc.getDrawPage().remove(oShape)



If lHeight > 0 AND lWidth > 0 Then

Dim oSize

oSize = oGraph.Size

oSize.Height = lHeight

oSize.Width = lWidth

oGraph.Size = oSize

End If

' Set the paragraph style if it is in the document.

Dim oStyles

oStyles = oDoc.StyleFamilies.getByName("ParagraphStyles")

If oStyles.hasByName(sParStyle) Then

oCurs.ParaStyleName = sParStyle

End If

End Sub

Сервис com.sun.star.drawing.GraphicObjectShape в Writer

Объявляет сервис com.sun.star.drawing.GraphicObjectShape как объект Obj в текстовом документе следующая программа:

Sub Main

Dim T As Object

Dim Obj As Object

T = ThisComponent

Obj = T.createInstance("com.sun.star.drawing.GraphicObjectShape")

End Sub

Сервис com.sun.star.drawing.GraphicObjectShape в Writer имеет свойства, методы, интерфейсы UNO, представленные ниже.

Properties of object "SwXShape" - свойства объекта SwXShape:

Тип Свойство

OBJECT/void AnchorFrame

OBJECT EndPositionInHoriL2R

BOOL IsFollowingTextFlow

INTEGER FillTransparence

STRING/void ChainName

INTEGER/void AnchorPageNo

LONG/void AnchorType

LONG/void LeftMargin

INTEGER/void HoriOrient

LONG GraphicColorMode

LONG FillBitmapPositionOffsetY

LONG/void Surround

LONG/void HoriOrientPosition

INTEGER FillGradientStepCount

INTEGER RelativeHeight

LONG/void RightMargin

LONG TextMinimumFrameHeight

INTEGER/void HoriOrientRelation

BOOL SurroundContour

LONG TextWrap

INTEGER AdjustContrast

LONG FillBitmapMode

INTEGER ParaLastLineAdjust

BOOL/void SurroundAnchorOnly

OBJECT GraphicCrop

BOOL CharOverlineHasColor

STRING CharFontStyleNameAsian

BOOL ContourOutside

INTEGER Transparency

LONG TopMargin

LONG BottomMargin

INTEGER RelativeWidthRelation

OBJECT/void LineStart

OBJECT TransformationInHoriL2R

BOOL ParaIsForbiddenRules

INTEGER/void VertOrient

LONG/void VertOrientPosition

INTEGER AdjustBlue

INTEGER RelativeWidth

INTEGER/void VertOrientRelation

OBJECT TextRange

BOOL Opaque

OBJECT AnchorPosition

INTEGER WrapInfluenceOnPosition

INTEGER PositionLayoutDir

LONG CharPostureComplex

BOOL TextAutoGrowWidth

OBJECT StartPositionInHoriL2R

INTEGER RelativeHeightRelation

LONG LineWidth

BOOL PageToggle

STRING/void GraphicStreamURL

BOOL TextBox

DOUBLE Gamma

STRING/void ChainNextName

LONG TextLowerDistance

LONG FillColor2

STRING/void ChainPrevName

INTEGER AdjustLuminance

LONG FillBitmapSizeX

INTEGER AdjustGreen

INTEGER AdjustRed

BOOL TextWordWrap

OBJECT FillTransparenceGradient

STRING GraphicURL

LONG FillBitmapSizeY

STRING LayerName

OBJECT Bitmap

STRING ReplacementGraphicURL

OBJECT FillBitmap

OBJECT LinkDisplayBitmap

OBJECT/void LineEnd

OBJECT GraphicObjectFillBitmap

LONG FontWorkShadowOffsetX

STRING FillBitmapURL

OBJECT Graphic

BOOL FillBitmapLogicalSize

LONG FillBitmapOffsetX

LONG FillBitmapPositionOffsetX

LONG FillBitmapOffsetY

LONG FillBitmapRectanglePoint

LONG LineEndWidth

INTEGER LineTransparence

BOOL FillBitmapStretch

BOOL FillBitmapTile

LONG FillColor

BOOL LineEndCenter

BOOL FillBackground

LONG LineCap

STRING FillBitmapName

LONG ShadowYDistance

OBJECT FillGradient

BOOL TextAnimationStopInside

STRING FillGradientName

OBJECT FillHatch

INTEGER LayerID

LONG FillStyle

STRING FillHatchName

LONG LineColor

INTEGER FontWorkShadowTransparence

OBJECT LineDash

INTEGER CharScaleWidth

STRING FillTransparenceGradientName

STRING LineDashName

LONG LineJoint

BOOL LineStartCenter

LONG LineStartWidth

LONG LineStyle

BOOL MoveProtect

STRING LineEndName

STRING LineStartName

BOOL Visible

LONG TextWritingMode

OBJECT Transformation

STRING Name

BOOL Printable

BOOL SizeProtect

STRING UINameSingular

INTEGER CharFontPitchAsian

STRING UINamePlural

STRING Title

LONG TextMaximumFrameWidth

STRING Description

ARRAY InteropGrabBag

LONG ZOrder

OBJECT FrameRect

LONG RotateAngle

ARRAY MetaFile

BOOL IsFontwork

OBJECT BoundRect

LONG ShearAngle

STRING LinkDisplayName

OBJECT ParaLineSpacing

BOOL Shadow

OBJECT NumberingRules

LONG ShadowColor

INTEGER ShadowTransparence

LONG ShadowXDistance

BOOL NumberingIsNumber

INTEGER TextAnimationAmount

SINGLE CharHeightComplex

INTEGER TextAnimationCount

INTEGER TextAnimationDelay

LONG TextAnimationDirection

LONG TextAnimationKind

BOOL FontWorkMirror

BOOL TextAnimationStartInside

BOOL TextAutoGrowHeight

BOOL TextContourFrame

LONG TextFitToSize

LONG TextHorizontalAdjust

LONG TextLeftDistance

LONG TextMaximumFrameHeight

LONG TextMinimumFrameWidth

LONG TextRightDistance

LONG TextUpperDistance

BOOL FontIndependentLineSpacing

LONG TextVerticalAdjust

STRING TextChainNextName

SINGLE CharHeight

STRING CharFontName

STRING CharFontStyleName

INTEGER CharFontFamily

INTEGER CharFontCharSet

INTEGER CharFontPitch

LONG CharPosture

SINGLE CharWeight

OBJECT CharLocale

LONG CharColor

LONG CharBackColor

BOOL CharBackTransparent

INTEGER CharEscapement

LONG CharUnderlineColor

INTEGER CharUnderline

BOOL CharUnderlineHasColor

LONG CharOverlineColor

INTEGER CharOverline

LONG ParaRightMargin

BOOL CharCrossedOut

LONG FontWorkShadowOffsetY

INTEGER CharStrikeout

INTEGER CharCaseMap

BOOL CharShadowed

BOOL CharContoured

INTEGER CharEscapementHeight

BOOL CharAutoKerning

INTEGER CharKerning

BOOL CharWordMode

BOOL ParaIsHyphenation

INTEGER CharEmphasis

SINGLE CharHeightAsian

INTEGER CharFontCharSetAsian

STRING CharFontNameAsian

INTEGER CharFontFamilyAsian

LONG CharPostureAsian

SINGLE CharWeightAsian

OBJECT CharLocaleAsian

STRING CharFontNameComplex

STRING CharFontStyleNameComplex

INTEGER CharFontFamilyComplex

INTEGER CharFontCharSetComplex

INTEGER CharFontPitchComplex

SINGLE CharWeightComplex

OBJECT CharLocaleComplex

INTEGER CharRelief

ARRAY CharInteropGrabBag

LONG ParaFirstLineIndent

INTEGER ParaAdjust

LONG ParaBottomMargin

LONG ParaLeftMargin

ARRAY ParaTabStops

LONG ParaTopMargin

BOOL ParaIsHangingPunctuation

BOOL ParaIsCharacterDistance

INTEGER WritingMode

LONG FontWorkStyle

LONG FontWorkAdjust

LONG FontWorkDistance

LONG FontWorkStart

BOOL FontWorkOutline

OBJECT ParaUserDefinedAttributes

LONG FontWorkShadow

LONG FontWorkShadowColor

BOOL FontWorkHideForm

BOOL IsMirrored

OBJECT UserDefinedAttributes

OBJECT GraphicStream

OBJECT PropertySetInfo

STRING PropertyToDefault

OBJECT Anchor

STRING ImplementationName

ARRAY SupportedServiceNames

STRING ShapeType

OBJECT Position

OBJECT Size

ARRAY Types

ARRAY ImplementationId

OBJECT Delegator

ARRAY PropertiesToDefault

OBJECT GluePoints

OBJECT Parent

OBJECT Text

OBJECT Start

OBJECT End

STRING String

OBJECT ElementType

STRING Dbg_SupportedInterfaces

STRING Dbg_Properties

STRING Dbg_Methods


Methods of object "SwXShape" - методы объекта SwXShape:

Тип Метод (тип)

EMPTY queryInterface ( OBJECT )

OBJECT getPropertySetInfo ( void )

VOID setPropertyValue ( STRING, VARIANT )

EMPTY getPropertyValue ( STRING )

VOID addPropertyChangeListener ( STRING, OBJECT )

VOID removePropertyChangeListener ( STRING, OBJECT )

VOID addVetoableChangeListener ( STRING, OBJECT )

VOID removeVetoableChangeListener ( STRING, OBJECT )

LONG getPropertyState ( STRING )

ARRAY getPropertyStates ( ARRAY )

VOID setPropertyToDefault ( STRING )

EMPTY getPropertyDefault ( STRING )

VOID dispose ( void )

VOID addEventListener ( OBJECT )

VOID removeEventListener ( OBJECT )

VOID attach ( OBJECT )

OBJECT getAnchor ( void )

STRING getImplementationName ( void )

BOOL supportsService ( STRING )

ARRAY getSupportedServiceNames ( void )

INT64 getSomething ( ARRAY )

STRING getShapeType ( void )

OBJECT getPosition ( void )

VOID setPosition ( OBJECT )

OBJECT getSize ( void )

VOID setSize ( OBJECT )

ARRAY getTypes ( void )

ARRAY getImplementationId ( void )

OBJECT queryAdapter ( void )

VOID setDelegator ( OBJECT )

EMPTY queryAggregation ( OBJECT )

OBJECT getPropertySetInfo ( void )

VOID setPropertyValues ( ARRAY, ARRAY )

ARRAY getPropertyValues ( ARRAY )

VOID addPropertiesChangeListener ( ARRAY, OBJECT )

VOID removePropertiesChangeListener ( OBJECT )

VOID firePropertiesChangeEvent ( ARRAY, OBJECT )

ARRAY getPropertyStates ( ARRAY )

VOID setAllPropertiesToDefault ( void )

VOID setPropertiesToDefault ( ARRAY )

ARRAY getPropertyDefaults ( ARRAY )

OBJECT getGluePoints ( void )

OBJECT getParent ( void )

VOID setParent ( OBJECT )

STRING getName ( void )

VOID setName ( STRING )

OBJECT getText ( void )

OBJECT getStart ( void )

OBJECT getEnd ( void )

STRING getString ( void )

VOID setString ( STRING )

OBJECT createTextCursor ( void )

OBJECT createTextCursorByRange ( OBJECT )

VOID insertString ( OBJECT, STRING, BOOL )

VOID insertControlCharacter ( OBJECT, INTEGER, BOOL )

VOID insertTextContent ( OBJECT, OBJECT, BOOL )

VOID removeTextContent ( OBJECT )

OBJECT finishParagraph ( ARRAY )

OBJECT finishParagraphInsert ( ARRAY, OBJECT )

OBJECT appendTextPortion ( STRING, ARRAY )

OBJECT insertTextPortion ( STRING, ARRAY, OBJECT )

VOID copyText ( OBJECT )

OBJECT getElementType ( void )

BOOL hasElements ( void )

OBJECT createEnumeration ( void )

VOID moveTextRange ( OBJECT, INTEGER )


Supported interfaces by object "SwXShape" - интерфейсы, поддерживаемые объектом SwXShape:

com.sun.star.beans.XMultiPropertySet

com.sun.star.beans.XMultiPropertyStates

com.sun.star.beans.XPropertySet

com.sun.star.beans.XPropertyState

com.sun.star.container.XChild

com.sun.star.container.XElementAccess

com.sun.star.container.XEnumerationAccess

com.sun.star.container.XNamed

com.sun.star.drawing.XGluePointsSupplier

com.sun.star.drawing.XShape

com.sun.star.drawing.XShapeDescriptor

com.sun.star.lang.XComponent

com.sun.star.lang.XServiceInfo

com.sun.star.lang.XTypeProvider

com.sun.star.lang.XUnoTunnel

com.sun.star.text.XParagraphAppend

com.sun.star.text.XSimpleText

com.sun.star.text.XText

com.sun.star.text.XTextAppend

com.sun.star.text.XTextContent

com.sun.star.text.XTextCopy

com.sun.star.text.XTextPortionAppend

com.sun.star.text.XTextRange

com.sun.star.text.XTextRangeMover

com.sun.star.uno.XAggregation

Сервис com.sun.star.graphic.GraphicProvider в Writer

Сервис com.sun.star.graphic.GraphicProvider является поставщиком изображения, например, загружаемого из файла. Создадим экземпляр поставщика изображений как объект GP в текстовом документе:

Sub Main

Dim GP As Object

GP = createUnoService("com.sun.star.graphic.GraphicProvider")

End Sub

Сервис com.sun.star.graphic.GraphicProvider в Writer имеет свойства, методы, интерфейсы UNO, представленные ниже.

Properties of object "com.sun.star.graphic.GraphicProvider" - свойства объекта GP:

Тип Свойство

STRING ImplementationName

ARRAY SupportedServiceNames

ARRAY Types

ARRAY ImplementationId

STRING Dbg_SupportedInterfaces

STRING Dbg_Properties

STRING Dbg_Methods

Methods of object "com.sun.star.graphic.GraphicProvider" - методы объекта GP:

Тип Метод (тип)

EMPTY queryInterface ( OBJECT )

STRING getImplementationName ( void )

BOOL supportsService ( STRING )

ARRAY getSupportedServiceNames ( void )

ARRAY getTypes ( void )

ARRAY getImplementationId ( void )

OBJECT queryGraphicDescriptor ( ARRAY )

OBJECT queryGraphic ( ARRAY )

VOID storeGraphic ( OBJECT, ARRAY )

Supported interfaces by object "com.sun.star.graphic.GraphicProvider" - интерфейсы, поддерживаемые объектом GP:

com.sun.star.graphic.XGraphicProvider

com.sun.star.lang.XServiceInfo

com.sun.star.lang.XTypeProvider

UNO структура com.sun.star.beans.PropertyValue в Writer

UNO структура com.sun.star.beans.PropertyValue позволяет создавать массив аргументов, необходимый для использования некоторых команд диспетчера, а также методов. Объявим UNO структуру Property(0) в текстовом документе:

Sub Main

Dim Property(0) as new com.sun.star.beans.PropertyValue

End Sub

UNO структура com.sun.star.beans.PropertyValue в Writer имеет свойства, методы, интерфейсы UNO, представленные ниже.

Properties of object "com.sun.star.beans.PropertyValue" - свойства объекта Property(0):

Тип Свойство

STRING Name

LONG Handle

EMPTY Value

LONG State

STRING Dbg_SupportedInterfaces

STRING Dbg_Properties

STRING Dbg_Methods

Methods of object "com.sun.star.beans.PropertyValue":
No methods found

(TypeClass is not TypeClass_INTERFACE)

Dbg_SupportedInterfaces not available.

Универсальные программы для разных типов файлов

Sub DrawLinesInWriteDocument

Dim oDoc 'Newly created Writer document

'(вновь созданный Writer документ)

Dim oDrawPage 'The draw page that will contain the graphics image

'(рисуемая страница, которая будет содержать графическое изображение)

Dim oShape 'Shape to insert (форма для вставки)



REM Create a new Writer document (создание нового Writer документа)

' oDoc = StarDesktop.loadComponentFromURL("private:factory/swriter",_

' "_default", 0, Array())



oDoc = thiscomponent



sWriter$ = "com.sun.star.text.TextDocument"

If ThisComponent.SupportsService(sWriter$) Then

' MsgBox "The current document is an Writer document", 0, "Writer Document"

oDrawPage = oDoc.getDrawPage() ' Writer

Else

oDrawPage = oDoc.DrawPages(0) ' Calc, Draw, Impress

End If

Dim i As Long

Dim oSize as new com.sun.star.awt.Size

Dim dStepSize As Double

dStepSize = 800

For i = 0 To 10

oShape = oDoc.createInstance("com.sun.star.drawing.LineShape")

oShape.LineColor = rgb(255, 255 - 20 * i, 20 * i)

oShape.LineWidth = 50

oSize.width = dStepSize - CLng(CDbl(i) * dStepSize / 10)/2

oSize.width = CLng(dStepSize/5 * i - dStepSize)

oSize.height= dStepSize

oShape.setSize(oSize)

oDrawPage.add(oShape)

Next

End Sub

Документы Draw и Impress

Draw для создания русунков, Impress для презентаций являются векторно-ориентированными графическими приложениями. Документы векторного графического редактора Draw поддерживают com.sun.star.drawing.DrawingDocument и документы Impress поддерживают com.sun.star.presentation.PresentationDocument службу.

Макрос должен соответствовать типу документа, проверить тип документа можно с помощью SupportsService в следующей программе

Listing 482. Check for an Impress document before checking for a Draw document (проверка документа Impress перед проверкой документа Draw).

REM If it really matters, you should check the document type

REM to avoid a run-time error.

sDraw$ = "com.sun.star.drawing.DrawingDocument"

sImpress$ = "com.sun.star.presentation.PresentationDocument"

If ThisComponent.SupportsService(sImpress$) Then

MsgBox "The current document is an Impress document", 0, "Impress Document"

ElseIf ThisComponent.SupportsService(sDraw$) Then

MsgBox "The current document is a Draw document", 0, "Draw Document"

Else

MsgBox "The current document is not the correct type", 48, "Error"

Exit Sub

End If

Следующую функцию макросы ниже вызывают для создания нового пустого документа Calc, Writer, Draw, Math или Impress, передавая при обращении к функции параметр docType$ соответственно scalc, swriter, sdraw, smath, and simpress.

Listing 483. Create a new document (создание нового документа).

REM Create a new empty document (Создание нового пустого документа)

REM consider document types of (предусматривается документ типов)

REM scalc, swriter, sdraw, smath, and simpress

Function LoadEmptyDocument(docType$)

Dim noArgs() 'An empty array for the arguments (Пустой массив для аргументов)

Dim sURL As String 'URL of the document to load (URL-адрес документа для загрузки)

sURL = "private:factory/" & docType

LoadEmptyDocument = StarDesktop.LoadComponentFromUrl(sURL, "_blank", 0, noArgs())

End Function

Свойства, методы, интерфейсы UNO в Draw

Программа, написанная в Draw и объявляющая графический документ (sDraw) как объект G:


Sub Main

Dim G As Object

G = ThisComponent

End Sub


Объект G имеет свойства, методы, сервисы, интерфейсы UNO, представленные ниже.

Properties of object "ThisComponent" - свойства объекта sDraw:

Тип Свойство

OBJECT ForbiddenCharacters

STRING BuildId

BOOL ApplyFormDesignMode

LONG TabStop

OBJECT CharLocale

OBJECT VisibleArea

OBJECT BasicLibraries

BOOL AutomaticControlFocus

INTEGER MapUnit

OBJECT DialogLibraries

STRING RuntimeUID

BOOL HasValidSignatures

ARRAY Fonts

ARRAY InteropGrabBag

OBJECT PropertySetInfo

STRING ImplementationName

ARRAY SupportedServiceNames

ARRAY AvailableServiceNames

OBJECT LayerManager

OBJECT MasterPages

OBJECT DrawPages

OBJECT Links

OBJECT StyleFamilies

OBJECT Parent

OBJECT DocumentProperties

ARRAY CmisProperties

ARRAY AllVersions

STRING StringValue

STRING Namespace

STRING LocalName

OBJECT RDFRepository

OBJECT UndoManager

OBJECT Events

BOOL AllowMacroExecution

OBJECT ScriptContainer

STRING URL

ARRAY Args

OBJECT CurrentController

OBJECT CurrentSelection

OBJECT Controllers

ARRAY AvailableViewControllerNames

BOOL Modified

ARRAY Printer

STRING Location

OBJECT LibraryContainer

OBJECT ViewData

ARRAY TransferDataFlavors

ARRAY DocumentSubStoragesNames

OBJECT DocumentStorage

OBJECT ScriptProvider

OBJECT UIConfigurationManager

STRING Identifier

STRING Title

STRING UntitledPrefix

ARRAY Types

ARRAY ImplementationId

STRING Dbg_SupportedInterfaces

STRING Dbg_Properties

STRING Dbg_Methods


Methods of object "ThisComponent" - методы объекта sDraw:

Тип Метод (тип)

EMPTY queryInterface ( OBJECT )

OBJECT getPropertySetInfo ( void )

VOID setPropertyValue ( STRING, VARIANT )

EMPTY getPropertyValue ( STRING )

VOID addPropertyChangeListener ( STRING, OBJECT )

VOID removePropertyChangeListener ( STRING, OBJECT )

VOID addVetoableChangeListener ( STRING, OBJECT )

VOID removeVetoableChangeListener ( STRING, OBJECT )

STRING getImplementationName ( void )

BOOL supportsService ( STRING )

ARRAY getSupportedServiceNames ( void )

OBJECT createInstance ( STRING )

OBJECT createInstanceWithArguments ( STRING, ARRAY )

ARRAY getAvailableServiceNames ( void )

OBJECT duplicate ( OBJECT )

OBJECT getLayerManager ( void )

OBJECT getMasterPages ( void )

OBJECT getDrawPages ( void )

OBJECT getLinks ( void )

OBJECT getStyleFamilies ( void )

OBJECT createAnyCompareByName ( STRING )

LONG getRendererCount ( VARIANT, ARRAY )

ARRAY getRenderer ( LONG, VARIANT, ARRAY )

VOID render ( LONG, VARIANT, ARRAY )

OBJECT getParent ( void )

VOID setParent ( OBJECT )

OBJECT getDocumentProperties ( void )

VOID checkOut ( void )

VOID cancelCheckOut ( void )

VOID checkIn ( BOOL, STRING )

BOOL isVersionable ( void )

BOOL canCheckOut ( void )

BOOL canCancelCheckOut ( void )

BOOL canCheckIn ( void )

VOID updateCmisProperties ( ARRAY )

ARRAY getAllVersions ( void )

OBJECT getRDFRepository ( void )

OBJECT getElementByMetadataReference ( OBJECT )

OBJECT getElementByURI ( OBJECT )

ARRAY getMetadataGraphsWithType ( OBJECT )

OBJECT addMetadataFile ( STRING, ARRAY )

OBJECT importMetadataFile ( INTEGER, OBJECT, STRING, OBJECT, ARRAY )

VOID removeMetadataFile ( OBJECT )

VOID addContentOrStylesFile ( STRING )

VOID removeContentOrStylesFile ( STRING )

VOID loadMetadataFromStorage ( OBJECT, OBJECT, OBJECT )

VOID storeMetadataToStorage ( OBJECT )

VOID loadMetadataFromMedium ( ARRAY )

VOID storeMetadataToMedium ( ARRAY )

BOOL wasModifiedSinceLastSave ( void )

VOID storeToRecoveryFile ( STRING, ARRAY )

VOID recoverFromFile ( STRING, STRING, ARRAY )

OBJECT getUndoManager ( void )

VOID addEventListener ( OBJECT )

VOID removeEventListener ( OBJECT )

VOID addDocumentEventListener ( OBJECT )

VOID removeDocumentEventListener ( OBJECT )

VOID notifyDocumentEvent ( STRING, OBJECT, VARIANT )

VOID disposing ( OBJECT )

OBJECT getEvents ( void )

VOID dispose ( void )

VOID addEventListener ( OBJECT )

VOID removeEventListener ( OBJECT )

BOOL attachResource ( STRING, ARRAY )

STRING getURL ( void )

ARRAY getArgs ( void )

VOID connectController ( OBJECT )

VOID disconnectController ( OBJECT )

VOID lockControllers ( void )

VOID unlockControllers ( void )

BOOL hasControllersLocked ( void )

OBJECT getCurrentController ( void )

VOID setCurrentController ( OBJECT )

OBJECT getCurrentSelection ( void )

OBJECT getControllers ( void )

ARRAY getAvailableViewControllerNames ( void )

OBJECT createDefaultViewController ( OBJECT )

OBJECT createViewController ( STRING, ARRAY, OBJECT )

VOID addEventListener ( OBJECT )

VOID removeEventListener ( OBJECT )

VOID addEventListener ( OBJECT )

VOID removeEventListener ( OBJECT )

VOID addModifyListener ( OBJECT )

VOID removeModifyListener ( OBJECT )

BOOL isModified ( void )

VOID setModified ( BOOL )

BOOL disableSetModified ( void )

BOOL enableSetModified ( void )

BOOL isSetModifiedEnabled ( void )

ARRAY getPrinter ( void )

VOID setPrinter ( ARRAY )

VOID print ( ARRAY )

VOID addPrintJobListener ( OBJECT )

VOID removePrintJobListener ( OBJECT )

BOOL hasLocation ( void )

STRING getLocation ( void )

BOOL isReadonly ( void )

VOID store ( void )

VOID storeAsURL ( STRING, ARRAY )

VOID storeToURL ( STRING, ARRAY )

VOID storeSelf ( ARRAY )

VOID initNew ( void )

VOID load ( ARRAY )

OBJECT getLibraryContainer ( void )

VOID createLibrary ( STRING, STRING, STRING, STRING )

VOID addModule ( STRING, STRING, STRING, STRING )

VOID addDialog ( STRING, STRING, ARRAY )

OBJECT getViewData ( void )

VOID setViewData ( OBJECT )

VOID addCloseListener ( OBJECT )

VOID removeCloseListener ( OBJECT )

VOID close ( BOOL )

EMPTY getTransferData ( OBJECT )

ARRAY getTransferDataFlavors ( void )

BOOL isDataFlavorSupported ( OBJECT )

OBJECT getDocumentSubStorage ( STRING, LONG )

ARRAY getDocumentSubStoragesNames ( void )

VOID loadFromStorage ( OBJECT, ARRAY )

VOID storeToStorage ( OBJECT, ARRAY )

VOID switchToStorage ( OBJECT )

OBJECT getDocumentStorage ( void )

VOID addStorageChangeListener ( OBJECT )

VOID removeStorageChangeListener ( OBJECT )

OBJECT getScriptProvider ( void )

OBJECT getUIConfigurationManager ( void )

VOID setVisualAreaSize ( INT64, OBJECT )

OBJECT getVisualAreaSize ( INT64 )

OBJECT getPreferredVisualRepresentation ( INT64 )

LONG getMapUnit ( INT64 )

INT64 getSomething ( ARRAY )

VOID setIdentifier ( STRING )

STRING getIdentifier ( void )

STRING getTitle ( void )

VOID setTitle ( STRING )

VOID addTitleChangeListener ( OBJECT )

VOID removeTitleChangeListener ( OBJECT )

LONG leaseNumber ( OBJECT )

VOID releaseNumber ( LONG )

VOID releaseNumberForComponent ( OBJECT )

STRING getUntitledPrefix ( void )

ARRAY getTypes ( void )

ARRAY getImplementationId ( void )

OBJECT queryAdapter ( void )

Supported interfaces by object "ThisComponent" - интерфейсы, поддерживаемые объектом sDraw:

com.sun.star.beans.XPropertySet

com.sun.star.container.XChild

com.sun.star.datatransfer.XTransferable

com.sun.star.document.XCmisDocument

com.sun.star.document.XDocumentEventBroadcaster

com.sun.star.document.XDocumentPropertiesSupplier

com.sun.star.document.XDocumentRecovery

com.sun.star.document.XDocumentSubStorageSupplier

com.sun.star.document.XEmbeddedScripts

com.sun.star.document.XEventBroadcaster

com.sun.star.document.XEventsSupplier

com.sun.star.document.XLinkTargetSupplier

com.sun.star.document.XScriptInvocationContext

com.sun.star.document.XStorageBasedDocument

com.sun.star.document.XUndoManagerSupplier

com.sun.star.document.XViewDataSupplier

com.sun.star.drawing.XDrawPageDuplicator

com.sun.star.drawing.XDrawPagesSupplier

com.sun.star.drawing.XLayerSupplier

com.sun.star.drawing.XMasterPagesSupplier

com.sun.star.embed.XVisualObject

com.sun.star.frame.XLoadable

com.sun.star.frame.XModel

com.sun.star.frame.XModel2

com.sun.star.frame.XModule

com.sun.star.frame.XStorable

com.sun.star.frame.XStorable2

com.sun.star.frame.XTitle

com.sun.star.frame.XTitleChangeBroadcaster

com.sun.star.frame.XUntitledNumbers

com.sun.star.lang.XComponent

com.sun.star.lang.XEventListener

com.sun.star.lang.XMultiServiceFactory

com.sun.star.lang.XServiceInfo

com.sun.star.lang.XTypeProvider

com.sun.star.lang.XUnoTunnel

com.sun.star.rdf.XDocumentMetadataAccess

com.sun.star.rdf.XNode

com.sun.star.rdf.XRepositorySupplier

com.sun.star.rdf.XResource

com.sun.star.rdf.XURI

com.sun.star.script.XStarBasicAccess

com.sun.star.script.provider.XScriptProviderSupplier

com.sun.star.style.XStyleFamiliesSupplier

com.sun.star.ucb.XAnyCompareFactory

com.sun.star.ui.XUIConfigurationManagerSupplier

com.sun.star.uno.XWeak

com.sun.star.util.XCloseBroadcaster

com.sun.star.util.XCloseable

com.sun.star.util.XModifiable

com.sun.star.util.XModifiable2

com.sun.star.util.XModifyBroadcaster

com.sun.star.view.XPrintJobBroadcaster

com.sun.star.view.XPrintable

com.sun.star.view.XRenderable

Свойства, методы, интерфейсы UNO в Impress

Программа, написанная в Impress и объявляющая документ (sImpress) как объект Doc:

Sub Main

Dim Doc As Object

Doc = ThisComponent

End Sub

Объект Doc имеет свойства, методы, сервисы, интерфейсы UNO, представленные ниже.

Properties of object "ThisComponent" - свойства объекта sImpress:

Тип Свойство

OBJECT ForbiddenCharacters

STRING BuildId

BOOL ApplyFormDesignMode

LONG TabStop

OBJECT CharLocale

OBJECT VisibleArea

OBJECT BasicLibraries

BOOL AutomaticControlFocus

INTEGER MapUnit

OBJECT DialogLibraries

STRING RuntimeUID

BOOL HasValidSignatures

ARRAY Fonts

ARRAY InteropGrabBag

OBJECT PropertySetInfo

STRING ImplementationName

ARRAY SupportedServiceNames

ARRAY AvailableServiceNames

OBJECT LayerManager

OBJECT MasterPages

OBJECT DrawPages

OBJECT Links

OBJECT StyleFamilies

OBJECT Presentation

OBJECT CustomPresentations

OBJECT HandoutMasterPage

OBJECT Parent

OBJECT DocumentProperties

ARRAY CmisProperties

ARRAY AllVersions

STRING StringValue

STRING Namespace

STRING LocalName

OBJECT RDFRepository

OBJECT UndoManager

OBJECT Events

BOOL AllowMacroExecution

OBJECT ScriptContainer

STRING URL

ARRAY Args

OBJECT CurrentController

OBJECT CurrentSelection

OBJECT Controllers

ARRAY AvailableViewControllerNames

BOOL Modified

ARRAY Printer

STRING Location

OBJECT LibraryContainer

OBJECT ViewData

ARRAY TransferDataFlavors

ARRAY DocumentSubStoragesNames

OBJECT DocumentStorage

OBJECT ScriptProvider

OBJECT UIConfigurationManager

STRING Identifier

STRING Title

STRING UntitledPrefix

ARRAY Types

ARRAY ImplementationId

STRING Dbg_SupportedInterfaces

STRING Dbg_Properties

STRING Dbg_Methods


Methods of object "ThisComponent" - методы объекта sImpress:

Тип Метод (тип)

EMPTY queryInterface ( OBJECT )

OBJECT getPropertySetInfo ( void )

VOID setPropertyValue ( STRING, VARIANT )

EMPTY getPropertyValue ( STRING )

VOID addPropertyChangeListener ( STRING, OBJECT )

VOID removePropertyChangeListener ( STRING, OBJECT )

VOID addVetoableChangeListener ( STRING, OBJECT )

VOID removeVetoableChangeListener ( STRING, OBJECT )

STRING getImplementationName ( void )

BOOL supportsService ( STRING )

ARRAY getSupportedServiceNames ( void )

OBJECT createInstance ( STRING )

OBJECT createInstanceWithArguments ( STRING, ARRAY )

ARRAY getAvailableServiceNames ( void )

OBJECT duplicate ( OBJECT )

OBJECT getLayerManager ( void )

OBJECT getMasterPages ( void )

OBJECT getDrawPages ( void )

OBJECT getLinks ( void )

OBJECT getStyleFamilies ( void )

OBJECT createAnyCompareByName ( STRING )

LONG getRendererCount ( VARIANT, ARRAY )

ARRAY getRenderer ( LONG, VARIANT, ARRAY )

VOID render ( LONG, VARIANT, ARRAY )

OBJECT getPresentation ( void )

OBJECT getCustomPresentations ( void )

OBJECT getHandoutMasterPage ( void )

OBJECT getParent ( void )

VOID setParent ( OBJECT )

OBJECT getDocumentProperties ( void )

VOID checkOut ( void )

VOID cancelCheckOut ( void )

VOID checkIn ( BOOL, STRING )

BOOL isVersionable ( void )

BOOL canCheckOut ( void )

BOOL canCancelCheckOut ( void )

BOOL canCheckIn ( void )

VOID updateCmisProperties ( ARRAY )

ARRAY getAllVersions ( void )

OBJECT getRDFRepository ( void )

OBJECT getElementByMetadataReference ( OBJECT )

OBJECT getElementByURI ( OBJECT )

ARRAY getMetadataGraphsWithType ( OBJECT )

OBJECT addMetadataFile ( STRING, ARRAY )

OBJECT importMetadataFile ( INTEGER, OBJECT, STRING, OBJECT, ARRAY )

VOID removeMetadataFile ( OBJECT )

VOID addContentOrStylesFile ( STRING )

VOID removeContentOrStylesFile ( STRING )

VOID loadMetadataFromStorage ( OBJECT, OBJECT, OBJECT )

VOID storeMetadataToStorage ( OBJECT )

VOID loadMetadataFromMedium ( ARRAY )

VOID storeMetadataToMedium ( ARRAY )

BOOL wasModifiedSinceLastSave ( void )

VOID storeToRecoveryFile ( STRING, ARRAY )

VOID recoverFromFile ( STRING, STRING, ARRAY )

OBJECT getUndoManager ( void )

VOID addEventListener ( OBJECT )

VOID removeEventListener ( OBJECT )

VOID addDocumentEventListener ( OBJECT )

VOID removeDocumentEventListener ( OBJECT )

VOID notifyDocumentEvent ( STRING, OBJECT, VARIANT )

VOID disposing ( OBJECT )

OBJECT getEvents ( void )

VOID dispose ( void )

VOID addEventListener ( OBJECT )

VOID removeEventListener ( OBJECT )

BOOL attachResource ( STRING, ARRAY )

STRING getURL ( void )

ARRAY getArgs ( void )

VOID connectController ( OBJECT )

VOID disconnectController ( OBJECT )

VOID lockControllers ( void )

VOID unlockControllers ( void )

BOOL hasControllersLocked ( void )

OBJECT getCurrentController ( void )

VOID setCurrentController ( OBJECT )

OBJECT getCurrentSelection ( void )

OBJECT getControllers ( void )

ARRAY getAvailableViewControllerNames ( void )

OBJECT createDefaultViewController ( OBJECT )

OBJECT createViewController ( STRING, ARRAY, OBJECT )

VOID addEventListener ( OBJECT )

VOID removeEventListener ( OBJECT )

VOID addEventListener ( OBJECT )

VOID removeEventListener ( OBJECT )

VOID addModifyListener ( OBJECT )

VOID removeModifyListener ( OBJECT )

BOOL isModified ( void )

VOID setModified ( BOOL )

BOOL disableSetModified ( void )

BOOL enableSetModified ( void )

BOOL isSetModifiedEnabled ( void )

ARRAY getPrinter ( void )

VOID setPrinter ( ARRAY )

VOID print ( ARRAY )

VOID addPrintJobListener ( OBJECT )

VOID removePrintJobListener ( OBJECT )

BOOL hasLocation ( void )

STRING getLocation ( void )

BOOL isReadonly ( void )

VOID store ( void )

VOID storeAsURL ( STRING, ARRAY )

VOID storeToURL ( STRING, ARRAY )

VOID storeSelf ( ARRAY )

VOID initNew ( void )

VOID load ( ARRAY )

OBJECT getLibraryContainer ( void )

VOID createLibrary ( STRING, STRING, STRING, STRING )

VOID addModule ( STRING, STRING, STRING, STRING )

VOID addDialog ( STRING, STRING, ARRAY )

OBJECT getViewData ( void )

VOID setViewData ( OBJECT )

VOID addCloseListener ( OBJECT )

VOID removeCloseListener ( OBJECT )

VOID close ( BOOL )

EMPTY getTransferData ( OBJECT )

ARRAY getTransferDataFlavors ( void )

BOOL isDataFlavorSupported ( OBJECT )

OBJECT getDocumentSubStorage ( STRING, LONG )

ARRAY getDocumentSubStoragesNames ( void )

VOID loadFromStorage ( OBJECT, ARRAY )

VOID storeToStorage ( OBJECT, ARRAY )

VOID switchToStorage ( OBJECT )

OBJECT getDocumentStorage ( void )

VOID addStorageChangeListener ( OBJECT )

VOID removeStorageChangeListener ( OBJECT )

OBJECT getScriptProvider ( void )

OBJECT getUIConfigurationManager ( void )

VOID setVisualAreaSize ( INT64, OBJECT )

OBJECT getVisualAreaSize ( INT64 )

OBJECT getPreferredVisualRepresentation ( INT64 )

LONG getMapUnit ( INT64 )

INT64 getSomething ( ARRAY )

VOID setIdentifier ( STRING )

STRING getIdentifier ( void )

STRING getTitle ( void )

VOID setTitle ( STRING )

VOID addTitleChangeListener ( OBJECT )

VOID removeTitleChangeListener ( OBJECT )

LONG leaseNumber ( OBJECT )

VOID releaseNumber ( LONG )

VOID releaseNumberForComponent ( OBJECT )

STRING getUntitledPrefix ( void )

ARRAY getTypes ( void )

ARRAY getImplementationId ( void )

OBJECT queryAdapter ( void )


Supported interfaces by object "ThisComponent" - интерфейсы, поддерживаемые объектом sImpress:

com.sun.star.beans.XPropertySet

com.sun.star.container.XChild

com.sun.star.datatransfer.XTransferable

com.sun.star.document.XCmisDocument

com.sun.star.document.XDocumentEventBroadcaster

com.sun.star.document.XDocumentPropertiesSupplier

com.sun.star.document.XDocumentRecovery

com.sun.star.document.XDocumentSubStorageSupplier

com.sun.star.document.XEmbeddedScripts

com.sun.star.document.XEventBroadcaster

com.sun.star.document.XEventsSupplier

com.sun.star.document.XLinkTargetSupplier

com.sun.star.document.XScriptInvocationContext

com.sun.star.document.XStorageBasedDocument

com.sun.star.document.XUndoManagerSupplier

com.sun.star.document.XViewDataSupplier

com.sun.star.drawing.XDrawPageDuplicator

com.sun.star.drawing.XDrawPagesSupplier

com.sun.star.drawing.XLayerSupplier

com.sun.star.drawing.XMasterPagesSupplier

com.sun.star.embed.XVisualObject

com.sun.star.frame.XLoadable

com.sun.star.frame.XModel

com.sun.star.frame.XModel2

com.sun.star.frame.XModule

com.sun.star.frame.XStorable

com.sun.star.frame.XStorable2

com.sun.star.frame.XTitle

com.sun.star.frame.XTitleChangeBroadcaster

com.sun.star.frame.XUntitledNumbers

com.sun.star.lang.XComponent

com.sun.star.lang.XEventListener

com.sun.star.lang.XMultiServiceFactory

com.sun.star.lang.XServiceInfo

com.sun.star.lang.XTypeProvider

com.sun.star.lang.XUnoTunnel

com.sun.star.presentation.XCustomPresentationSupplier

com.sun.star.presentation.XHandoutMasterSupplier

com.sun.star.presentation.XPresentationSupplier

com.sun.star.rdf.XDocumentMetadataAccess

com.sun.star.rdf.XNode

com.sun.star.rdf.XRepositorySupplier

com.sun.star.rdf.XResource

com.sun.star.rdf.XURI

com.sun.star.script.XStarBasicAccess

com.sun.star.script.provider.XScriptProviderSupplier

com.sun.star.style.XStyleFamiliesSupplier

com.sun.star.ucb.XAnyCompareFactory

com.sun.star.ui.XUIConfigurationManagerSupplier

com.sun.star.uno.XWeak

com.sun.star.util.XCloseBroadcaster

com.sun.star.util.XCloseable

com.sun.star.util.XModifiable

com.sun.star.util.XModifiable2

com.sun.star.util.XModifyBroadcaster

com.sun.star.view.XPrintJobBroadcaster

com.sun.star.view.XPrintable

com.sun.star.view.XRenderable

Страницы рисунков

Listing 484. Print information related to draw pages and master pages (печать информации о связи страниц рисунков и мастера страниц).

Sub getPages()

Dim s$

Dim oDoc

oDoc = LoadEmptyDocument("simpress")

s = s & getPagesInfo(oDoc.getDrawPages(), "Draw Pages")

s = s & CHR$(10)

s = s & getPagesInfo(oDoc.getMasterPages(), "Master Pages")

MsgBox s, 0, "Pages"

End Sub



Function getPagesInfo(oDPages, sType$) As String

Dim i%, s$

Dim oDPage, oMPage

s = s & "*** There are " & oDPages.getCount() & " " & sType & CHR$(10)

For i = 0 To oDPages.getCount()-1

oDPage = oDPages.getByIndex(i)

s = s & "Page " & i & " = '" & oDPage.getName() & "'"

If NOT oDPage.supportsService("com.sun.star.drawing.MasterPage") Then

oMPage = oDPage.getMasterPage()

s = s & " master = "

If NOT IsNull(oMPage) AND NOT IsEmpty(oMPage) Then

s = s & "'" & oMPage.getName() & "'"

End If

End If

s = s & CHR$(10)

Next

getPagesInfo = s

End Function

Listing 485. Create a new page by name, avoiding multiple names (создание новой страницы по имени, избегая нескольких имен).

Function createDrawPage(oDoc, sName$, bForceNew As boolean) As Variant

Dim oPages 'All of the draw pages

Dim oPage 'A single draw page

Dim i% 'General index variable

oPages = oDoc.getDrawPages()

If oPages.hasByName(sName) Then

REM If we require a new page then delete

REM the page.

If bForceNew Then

oPages.remove(oPages.getByName(sName))

Else

REM Did not request a new page so return the found page

REM and then get out of the function.

createDrawPage = oPages.getByName(sName)

Exit Function

End If

End If

REM Did not find the page, or found the page and removed it.

REM Create a new page, set the name, and return the page.

oPages.insertNewByIndex(oPages.getCount())

oPage = oPages.getByIndex(oPages.getCount()-1)

oPage.setName(sName)

createDrawPage = oPage

End Function

Создание изображения

Listing 486. Draw 20 lines in a Draw or Impress document (рисование 20-ти линий в документах Draw или Impress (см. рисунок 4)).

Function draw20Lines()

Dim oPage 'Page on which to draw

Dim oShape 'Shape to insert

Dim oPoint 'Initial start point of the line

Dim oSize 'Width and height of the line

Dim i% 'Index variable

Dim n% 'Number of iterations to perform

Dim nShift%'Shift the graphic down

Dim oDoc

oDoc = LoadEmptyDocument("sdraw")

draw20Lines = oDoc

oPage = createDrawPage(oDoc, "Test Draw", True)

nShift = oPage.Height / 4

n = 20

For i = 0 To n

oShape = oDoc.createInstance("com.sun.star.drawing.LineShape")

oShape.LineColor = RGB( 255, 0, i+20 )

oShape.LineWidth = 20

oPoint = oShape.Position

oPoint.X = oPage.Width / 4

oPoint.Y = i * oPage.Height / n / 4 + nShift

oShape.Position = oPoint

oSize = oShape.Size

oSize.Height = (oPage.Height - 2 * i * oPage.Height / n) / 4

oSize.Width = oPage.Width / 2

oShape.Size = oSize

oPage.add(oShape)

Next

End Function

Рисунок 4. Twenty lines in a Draw document (двадцать линий в Draw документе)

Литература

1. http://buhcia.narod.ru/OpenOffice_Macros_rus.odt (дата доступа: 28.03.2015).

2. http://www.pitonyak.org/AndrewMacro.odt (дата доступа: 28.03.2015).

3.OpenOffice.org Macros Explained. http://www.pitonyak.org/AndrewMacro.odt (дата доступа: 30.04.2016).

4. https://wiki.openoffice.org/wiki/Extensions_development_basic (дата доступа: 11.09.2017).

5.StarOffice Programmer’s Tutorial. - Sun Microsystems, 2000. - 132 с. http://www.openoffice.org/api/basic/man/tutorial/tutorial.pdf (дата доступа: 11.09.2017).

Сайт: super-code.ru

На главную

© 12.10.17 Ольшевский Андрей Георгиевич e-mail: da.irk.ru@mail.ru