xref: /AOO41X/test/testuno/source/testlib/uno/GraphicUtil.java (revision 43a102b2d160fdbc9485ed1f9c40936b61a06131)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 package testlib.uno;
22 import static org.junit.Assert.*;
23 import static testlib.uno.GraphicUtil.getSizePixelOfGraphicFile;
24 
25 import org.junit.After;
26 import org.junit.AfterClass;
27 import org.junit.Before;
28 import org.junit.BeforeClass;
29 import org.junit.Test;
30 import org.openoffice.test.uno.UnoApp;
31 import org.openoffice.test.common.FileUtil;
32 import org.openoffice.test.common.Testspace;
33 
34 import com.sun.star.beans.Property;
35 import com.sun.star.beans.PropertyValue;
36 import com.sun.star.beans.UnknownPropertyException;
37 import com.sun.star.beans.XPropertySet;
38 import com.sun.star.beans.XPropertySetInfo;
39 import com.sun.star.drawing.XDrawPage;
40 import com.sun.star.drawing.XShape;
41 import com.sun.star.drawing.XShapes;
42 import com.sun.star.graphic.XGraphic;
43 import com.sun.star.graphic.XGraphicObject;
44 import com.sun.star.graphic.XGraphicProvider;
45 import com.sun.star.lang.WrappedTargetException;
46 import com.sun.star.lang.XComponent;
47 import com.sun.star.lang.XMultiServiceFactory;
48 import com.sun.star.lang.XServiceName;
49 import com.sun.star.uno.Exception;
50 import com.sun.star.uno.UnoRuntime;
51 import com.sun.star.awt.Point;
52 import com.sun.star.awt.Size;
53 //import com.sun.star.uno.AnyConverter;
54 
55 public class GraphicUtil {
56 
getUniqueIDbyXGraphic(UnoApp unoApp, XGraphic xgraphic)57     public static String getUniqueIDbyXGraphic(UnoApp unoApp, XGraphic xgraphic) throws Exception{
58         Object graphicObj = unoApp.getServiceFactory().createInstance("com.sun.star.graphic.GraphicObject");
59         XGraphicObject xgraphicObj = (XGraphicObject)UnoRuntime.queryInterface(XGraphicObject.class, graphicObj);
60         xgraphicObj.setGraphic(xgraphic);
61 
62         return xgraphicObj.getUniqueID();
63     }
64 
65 //  String sUrl = "file:///F:/work/36.gif";
getUniqueIDOfGraphicFile(UnoApp unoApp, String sUrl)66     public static String getUniqueIDOfGraphicFile(UnoApp unoApp, String sUrl) throws Exception{
67         XGraphic xgraphic = getXGraphicOfGraphicFile(unoApp,sUrl);
68         String uniqueID = getUniqueIDbyXGraphic(unoApp, xgraphic);
69 
70         return uniqueID;
71     }
72 
getXGraphicOfGraphicFile(UnoApp unoApp, String sUrl)73     public static XGraphic getXGraphicOfGraphicFile(UnoApp unoApp, String sUrl) throws Exception
74     {
75         Object graphicObj = unoApp.getServiceFactory().createInstance("com.sun.star.graphic.GraphicProvider");
76         XGraphicProvider xgraphicProvider = (XGraphicProvider)UnoRuntime.queryInterface(XGraphicProvider.class, graphicObj);
77         PropertyValue[] sourceProps = new PropertyValue[1];
78         sourceProps[0]       = new PropertyValue();
79         sourceProps[0].Name  = "URL";
80         sourceProps[0].Value = sUrl;
81         return xgraphicProvider.queryGraphic(sourceProps);
82     }
83 
getSize100thMMOfGraphicFile(UnoApp unoApp, String sUrl)84     public static Size getSize100thMMOfGraphicFile(UnoApp unoApp, String sUrl) throws Exception
85     {
86         Object graphicObj = unoApp.getServiceFactory().createInstance("com.sun.star.graphic.GraphicProvider");
87         XGraphicProvider xgraphicProvider = (XGraphicProvider)UnoRuntime.queryInterface(XGraphicProvider.class, graphicObj);
88         PropertyValue[] sourceProps = new PropertyValue[1];
89         sourceProps[0]       = new PropertyValue();
90         sourceProps[0].Name  = "URL";
91         sourceProps[0].Value = sUrl;
92         XPropertySet xGraphicPro = xgraphicProvider.queryGraphicDescriptor(sourceProps);
93         Size size = (Size)xGraphicPro.getPropertyValue("Size100thMM");
94         return size;
95     }
96 
getSizePixelOfGraphicFile(UnoApp unoApp, String sUrl)97     public static Size getSizePixelOfGraphicFile(UnoApp unoApp, String sUrl) throws Exception
98     {
99         Object graphicObj = unoApp.getServiceFactory().createInstance("com.sun.star.graphic.GraphicProvider");
100         XGraphicProvider xgraphicProvider = (XGraphicProvider)UnoRuntime.queryInterface(XGraphicProvider.class, graphicObj);
101         PropertyValue[] sourceProps = new PropertyValue[1];
102         sourceProps[0]       = new PropertyValue();
103         sourceProps[0].Name  = "URL";
104         sourceProps[0].Value = sUrl;
105         XPropertySet xGraphicPro = xgraphicProvider.queryGraphicDescriptor(sourceProps);
106         Size size = (Size)xGraphicPro.getPropertyValue("SizePixel");
107         return size;
108     }
109 
110 
111     //GraphicObjectShape
getGraphicsOfPage(XDrawPage xDrawPage)112     public static Object[] getGraphicsOfPage(XDrawPage xDrawPage) throws Exception {
113         XShapes m_xdrawShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xDrawPage);
114         int count = m_xdrawShapes.getCount();
115         Object[] temp = new Object[count];
116         int graphicNum=0;
117         for(int i=0;i<count; i++)
118         {
119             Object shape = m_xdrawShapes.getByIndex(i);
120             XShape xshape = (XShape)UnoRuntime.queryInterface(XShape.class, shape);
121             String type = xshape.getShapeType();
122             if(type.equals("com.sun.star.drawing.GraphicObjectShape"))
123             {
124                 temp[graphicNum] = shape;
125                 graphicNum++;
126             }
127         }
128 
129         Object[] graphics = new Object[graphicNum];
130         System.arraycopy(temp, 0, graphics, 0, graphicNum);
131         return graphics;
132     }
133 
134     /*Insert a graphic into a Impress
135      * component: the Impress document
136      * toPage: the page that the graphic will be inserted to
137      * graphicURL: the file path of the graphic, e.g. file:///c:/test.png
138      * size: size of the graphic to be inserted
139      * position: position of the graphic to be inserted
140      * */
insertGraphic(XComponent component, XDrawPage toPage, String graphicURL, Size size, Point position)141     public static void insertGraphic(XComponent component, XDrawPage toPage, String graphicURL, Size size, Point position) throws Exception
142     {
143         XMultiServiceFactory xDrawFactory =
144                 (XMultiServiceFactory)UnoRuntime.queryInterface(
145                     XMultiServiceFactory.class, component);
146 
147         Object oGraphic = xDrawFactory.createInstance("com.sun.star.drawing.GraphicObjectShape");
148         XPropertySet xGraphicPro = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, oGraphic);
149         xGraphicPro.setPropertyValue("GraphicURL", graphicURL);
150 
151         XShape xDrawShape = (XShape)UnoRuntime.queryInterface(XShape.class, oGraphic);
152 
153         xDrawShape.setSize(size);
154         xDrawShape.setPosition(position);
155 
156         toPage.add(xDrawShape);
157     }
158 
159 }
160