/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * 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 . */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "emfpimage.hxx" namespace cppcanvas { namespace internal { void EMFPImage::Read(SvMemoryStream &s, sal_uInt32 dataSize, bool bUseWholeStream) { sal_uInt32 header, bitmapType; s.ReadUInt32(header).ReadUInt32(type); SAL_INFO("cppcanvas.emf", "EMF+\timage\nEMF+\theader: 0x" << std::hex << header << " type: " << type << std::dec); if (type == 1) { // bitmap s.ReadInt32(width).ReadInt32(height).ReadInt32(stride).ReadInt32(pixelFormat).ReadUInt32(bitmapType); SAL_INFO("cppcanvas.emf", "EMF+\tbitmap width: " << width << " height: " << height << " stride: " << stride << " pixelFormat: 0x" << std::hex << pixelFormat << std::dec); if ((bitmapType != 0) || (width == 0)) { // non native formats GraphicFilter filter; filter.ImportGraphic(graphic, OUString(), s); SAL_INFO("cppcanvas.emf", "EMF+\tbitmap width: " << graphic.GetBitmap().GetSizePixel().Width() << " height: " << graphic.GetBitmap().GetSizePixel().Height()); } } else if (type == 2) { // metafile sal_Int32 mfType, mfSize; s.ReadInt32(mfType).ReadInt32(mfSize); if (bUseWholeStream) dataSize = s.remainingSize(); else dataSize -= 16; SAL_INFO("cppcanvas.emf", "EMF+\tmetafile type: " << mfType << " dataSize: " << mfSize << " real size calculated from record dataSize: " << dataSize); GraphicFilter filter; // workaround buggy metafiles, which have wrong mfSize set (n#705956 for example) SvMemoryStream mfStream(const_cast(static_cast(s.GetData()) + s.Tell()), dataSize, StreamMode::READ); filter.ImportGraphic(graphic, OUString(), mfStream); // debug code - write the stream to debug file /tmp/emf-stream.emf #if OSL_DEBUG_LEVEL > 1 mfStream.Seek(0); static sal_Int32 emfp_debug_stream_number = 0; OUString emfp_debug_filename = "/tmp/emf-embedded-stream" + OUString::number(emfp_debug_stream_number++) + ".emf"; SvFileStream file(emfp_debug_filename, StreamMode::WRITE | StreamMode::TRUNC); mfStream.WriteStream(file); file.Flush(); file.Close(); #endif } } } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ > LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
path: root/vcl/qa
AgeCommit message (Expand)Author
2013-01-04Make LO buildable again after the GraphicFilter move.Jan Holesovsky
2013-01-04Move GraphicFilter class to vcl.Jan Holesovsky
2012-11-20fdo#51304: Remove @author annotationJosé Guilherme Vanz
2012-10-25remove .ui mark-up in favor of font attributesCaolán McNamara
2012-09-28Implement a VclExpander equivalent of GtkExpanderCaolán McNamara
2012-09-281-10 shouldn't be translatableCaolán McNamara
2012-09-28hook up tooltipsCaolán McNamara
2012-09-28implement widget alignment within gtkgridCaolán McNamara
2012-09-28beef up the demoCaolán McNamara
2012-09-28expand demo to showcase more layoutsCaolán McNamara
2012-09-28Add GtkNotebook->TabControl import and update demo to use itCaolán McNamara
2012-09-28add a GtkFrame to the demoCaolán McNamara
2012-09-28import GtkGridCaolán McNamara
2012-09-28implement ListBox dropdownCaolán McNamara
2012-09-28rearrange demo to help glade outCaolán McNamara
2012-09-28implement GtkSpinButtons as NumericFields for nowCaolán McNamara
2012-09-28allow reordering widget according to packing::positionCaolán McNamara
2012-09-28import expand/fill etc.Caolán McNamara
2012-09-28checkboxes, edit controlsCaolán McNamara
2012-09-28labels, radio buttons, vbox, hbox, button-boxes, text alignmentCaolán McNamara
2012-09-28bootstrap a ui-previewer for rendering GtkBuilder xml with vcl widgetsCaolán McNamara
2012-09-10Java cleanup, remove unnecessary importsNoel Grandin
2012-09-06Java cleanup, remove unnecessary importsNoel Grandin
2012-09-05Java cleanup, fix compile errorNoel Grandin
2012-06-26re-base on ALv2 code.Michael Meeks
2012-06-21re-base on ALv2 code.Michael Meeks
2012-06-21re-base on ALv2 code.Michael Meeks
2012-06-19typo: paramters, paramaters -> parametersAndras Timar
2012-03-21chmod -xTor Lillqvist