| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| package testlib.uno; |
| import static org.junit.Assert.*; |
| import static testlib.uno.GraphicUtil.getSizePixelOfGraphicFile; |
| |
| import org.junit.After; |
| import org.junit.AfterClass; |
| import org.junit.Before; |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| import org.openoffice.test.uno.UnoApp; |
| import org.openoffice.test.common.FileUtil; |
| import org.openoffice.test.common.Testspace; |
| |
| import com.sun.star.beans.Property; |
| import com.sun.star.beans.PropertyValue; |
| import com.sun.star.beans.UnknownPropertyException; |
| import com.sun.star.beans.XPropertySet; |
| import com.sun.star.beans.XPropertySetInfo; |
| import com.sun.star.drawing.XDrawPage; |
| import com.sun.star.drawing.XShape; |
| import com.sun.star.drawing.XShapes; |
| import com.sun.star.graphic.XGraphic; |
| import com.sun.star.graphic.XGraphicObject; |
| import com.sun.star.graphic.XGraphicProvider; |
| import com.sun.star.lang.WrappedTargetException; |
| import com.sun.star.lang.XComponent; |
| import com.sun.star.lang.XMultiServiceFactory; |
| import com.sun.star.lang.XServiceName; |
| import com.sun.star.uno.Exception; |
| import com.sun.star.uno.UnoRuntime; |
| import com.sun.star.awt.Point; |
| import com.sun.star.awt.Size; |
| //import com.sun.star.uno.AnyConverter; |
| |
| public class GraphicUtil { |
| |
| public static String getUniqueIDbyXGraphic(UnoApp unoApp, XGraphic xgraphic) throws Exception{ |
| Object graphicObj = unoApp.getServiceFactory().createInstance("com.sun.star.graphic.GraphicObject"); |
| XGraphicObject xgraphicObj = (XGraphicObject)UnoRuntime.queryInterface(XGraphicObject.class, graphicObj); |
| xgraphicObj.setGraphic(xgraphic); |
| |
| return xgraphicObj.getUniqueID(); |
| } |
| |
| // String sUrl = "file:///F:/work/36.gif"; |
| public static String getUniqueIDOfGraphicFile(UnoApp unoApp, String sUrl) throws Exception{ |
| XGraphic xgraphic = getXGraphicOfGraphicFile(unoApp,sUrl); |
| String uniqueID = getUniqueIDbyXGraphic(unoApp, xgraphic); |
| |
| return uniqueID; |
| } |
| |
| public static XGraphic getXGraphicOfGraphicFile(UnoApp unoApp, String sUrl) throws Exception |
| { |
| Object graphicObj = unoApp.getServiceFactory().createInstance("com.sun.star.graphic.GraphicProvider"); |
| XGraphicProvider xgraphicProvider = (XGraphicProvider)UnoRuntime.queryInterface(XGraphicProvider.class, graphicObj); |
| PropertyValue[] sourceProps = new PropertyValue[1]; |
| sourceProps[0] = new PropertyValue(); |
| sourceProps[0].Name = "URL"; |
| sourceProps[0].Value = sUrl; |
| return xgraphicProvider.queryGraphic(sourceProps); |
| } |
| |
| public static Size getSize100thMMOfGraphicFile(UnoApp unoApp, String sUrl) throws Exception |
| { |
| Object graphicObj = unoApp.getServiceFactory().createInstance("com.sun.star.graphic.GraphicProvider"); |
| XGraphicProvider xgraphicProvider = (XGraphicProvider)UnoRuntime.queryInterface(XGraphicProvider.class, graphicObj); |
| PropertyValue[] sourceProps = new PropertyValue[1]; |
| sourceProps[0] = new PropertyValue(); |
| sourceProps[0].Name = "URL"; |
| sourceProps[0].Value = sUrl; |
| XPropertySet xGraphicPro = xgraphicProvider.queryGraphicDescriptor(sourceProps); |
| Size size = (Size)xGraphicPro.getPropertyValue("Size100thMM"); |
| return size; |
| } |
| |
| public static Size getSizePixelOfGraphicFile(UnoApp unoApp, String sUrl) throws Exception |
| { |
| Object graphicObj = unoApp.getServiceFactory().createInstance("com.sun.star.graphic.GraphicProvider"); |
| XGraphicProvider xgraphicProvider = (XGraphicProvider)UnoRuntime.queryInterface(XGraphicProvider.class, graphicObj); |
| PropertyValue[] sourceProps = new PropertyValue[1]; |
| sourceProps[0] = new PropertyValue(); |
| sourceProps[0].Name = "URL"; |
| sourceProps[0].Value = sUrl; |
| XPropertySet xGraphicPro = xgraphicProvider.queryGraphicDescriptor(sourceProps); |
| Size size = (Size)xGraphicPro.getPropertyValue("SizePixel"); |
| return size; |
| } |
| |
| |
| //GraphicObjectShape |
| public static Object[] getGraphicsOfPage(XDrawPage xDrawPage) throws Exception { |
| XShapes m_xdrawShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xDrawPage); |
| int count = m_xdrawShapes.getCount(); |
| Object[] temp = new Object[count]; |
| int graphicNum=0; |
| for(int i=0;i<count; i++) |
| { |
| Object shape = m_xdrawShapes.getByIndex(i); |
| XShape xshape = (XShape)UnoRuntime.queryInterface(XShape.class, shape); |
| String type = xshape.getShapeType(); |
| if(type.equals("com.sun.star.drawing.GraphicObjectShape")) |
| { |
| temp[graphicNum] = shape; |
| graphicNum++; |
| } |
| } |
| |
| Object[] graphics = new Object[graphicNum]; |
| System.arraycopy(temp, 0, graphics, 0, graphicNum); |
| return graphics; |
| } |
| |
| /*Insert a graphic into a Impress |
| * component: the Impress document |
| * toPage: the page that the graphic will be inserted to |
| * graphicURL: the file path of the graphic, e.g. file:///c:/test.png |
| * size: size of the graphic to be inserted |
| * position: position of the graphic to be inserted |
| * */ |
| public static void insertGraphic(XComponent component, XDrawPage toPage, String graphicURL, Size size, Point position) throws Exception |
| { |
| XMultiServiceFactory xDrawFactory = |
| (XMultiServiceFactory)UnoRuntime.queryInterface( |
| XMultiServiceFactory.class, component); |
| |
| Object oGraphic = xDrawFactory.createInstance("com.sun.star.drawing.GraphicObjectShape"); |
| XPropertySet xGraphicPro = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, oGraphic); |
| xGraphicPro.setPropertyValue("GraphicURL", graphicURL); |
| |
| XShape xDrawShape = (XShape)UnoRuntime.queryInterface(XShape.class, oGraphic); |
| |
| xDrawShape.setSize(size); |
| xDrawShape.setPosition(position); |
| |
| toPage.add(xDrawShape); |
| } |
| |
| } |