# GDIMetaFile class The `GDIMetaFile` class reads, writes, manipulates and replays metafiles via the `VCL` module. A typical use case is to initialize a new `GDIMetaFile`, open the actual stored metafile and read it in via `GDIMetaFile::Read( aIStream )`. This reads in the metafile into the `GDIMetafile` object - it can read in an old-style `VCLMTF` metafile (back in the days that Microsoft didn't document the metafile format this was used), as well as EMF+ files - and adds them to a list (vector) of `MetaActions`. You can also populate your own `GDIMetaFile` via `AddAction()`, `RemoveAction()`, `ReplaceAction()`, etc. Once the `GDIMetafile` object is read to be used, you can "play" the metafile, "pause" it, "wind forward" or "rewind" the metafile. The metafile can be moved, scaled, rotated and clipped, as well have the colours adjusted or replaced, or even made monochrome. The GDIMetafile can be used to get an `OutputDevice`'s metafile via the `Linker()` and `Record()` functions. ## Using GDIMetafile First, create a new `GDIMetafile`, this can be done via the default constructor. It can then be constructed manually, or you can use `Record()` on an `OutputDevice` to populate the `GDIMetaFile`, or of course you can read it from file with `Read()`. From here you can then elect to manipulate the metafile, or play it back to another `GDIMetafile` or to an `OutputDevice` via `Play()`. To store the file, use `Write()`. ### CONSTRUCTORS AND DESTRUCTORS - `GDIMetaFile` - `GDIMetaFile( const GDIMetaFile& rMtf )` - copy constructor - `~GDIMetaFile` ### OPERATORS - `operator =` - `operator ==` - `operator !=` ### RECORDING AND PLAYBACK FUNCTIONS - `Play(GDIMetaFile&, size_t)` - play back metafile into another metafile up to position - `Play(OutputDevice*, size_t)` - play back metafile into `OutputDevice` up to position - `Play(OutputDevice*, Point, Size, size_t)` - play back metafile into `OutputDevice` at a particular location on the `OutputDevice`, up to the position in the metafile - `Pause` - pauses or continues the playback - `IsPause` - `Stop` - stop playback fully - `WindStart` - windback to start of the metafile - `windPrev` - windback one record - `GetActionSize` - get the number of records in the metafile ### METAFILE RECORD FUNCTIONS - `FirstAction` - get the first metafile record - `NextAction` - get the next metafile record from the current position - `GetAction(size_t)` - get the metafile record at location in file - `GetCurAction` - get the current metafile record - `AddAction(MetaAction*)` - appends a metafile record - `AddAction(MetaAction*, size_t)` - adds a metafile record to a particular location in the file - `RemoveAction` - removes record at file location - `Clear` - first stops if recording, then removes all metafile records - `push_back` - pushes back, basically a thin wrapper to the metafile record list ### READ AND WRITING - `Read` - `Write` - `GetChecksum` - `GetSizeBytes` ### DISPLACEMENT FUNCTIONS - `Move( long nX, long nX)` - `Move( long nX, long nX, long nDPIX, long nDPIY )` - Move method getting specifics how to handle MapMode( MapUnit::MapPixel ) ### TRANSFORMATION FUNCTIONS - `Scale( double fScaleX, double fScaleY )` - `Scale( const Fraction& rScaleX, const Fraction& rScaleY )` - `Mirror` - `Rotate( long nAngle10 )` - `Clip( const Rectangle& )` ### COLOR ADJUSTMENT FUNCTIONS - `Adjust` - change luminance, contrast, gamma and RGB via a percentage - `Convert` - colour conversion - `ReplaceColors` - `GetMonochromeMtf` ## Related classes `MetaAction`: a base class used by all records. It implements a command-like pattern, and also acts as a prototype for other actions. ### CONSTRUCTORS AND DESTRUCTORS - `MetaAction()` - default constructor, sets mnRefCount to 1 and mnType, in this case MetaActionType::NONE - `MetaAction(sal_uInt16 nType)` - virtual constructor, sets mnType to nType, and mnRefCount to 1 - `~MetaAction` ### COMMAND FUNCTION - `Execute(OutputDevice*)` - execute the functionality of the record to the OutputDevice. Part of command pattern. ### FACTORY FUNCTION - `Clone()` - prototype clone function ### MANIPULATION FUNCTIONS - `Move(long nHorzMove, long nVerMove)` - `Scale(double fScaleX, double fScaleY)` ### READ AND WRITE FUNCTIONS - `Read` - `Write` - `ReadMetaAction` - a static function, only used to determine which MetaAction to call on to read the record, which means that this is the function that must be used. ### INTROSPECTIVE FUNCTIONS - `GetType` ### A note about MetaCommentAction So this class is the most interesting - a comment record is what is used to extended metafiles, to make what we call an "Enhanced Metafile". This basically gets the `OutputDevice`'s connect metafile and adds the record via this when it runs `Execute()`. It doesn't actually do anything else, unlike other `MetaAction`s which invoke functions from `OutputDevice`. And if there is no connect metafile in `OutputDevice`, then it just does nothing at all in Execute. Everything else works as normal (Read, Write, etc). ## Basic pseudocode The following illustrates an exceptionally basic and incomplete implementation of how to use `GDIMetafile`. An example can be found at `vcl/workben/mtfdemo.cxx` ``` DemoWin::Paint() { // assume that VCL has been initialized and a new application created Window* pWin = new WorkWindow(); GDIMetaFile* pMtf = new GDIMetaFile(); SvFileStream aFileStream("example.emf", STEAM_READ); ReadWindowMetafile(aFileStream, pMtf); pMtf->Play(pWin); } ``` ce-7-5+backports LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
path: root/external/more_fonts/ExternalPackage_noto_sans.mk
AgeCommit message (Collapse)Author
2024-02-25Revert "tdf#159752: Add missing NotoSans/NotoSerif fonts back"Xisco Fauli
This reverts commit aa49b95cd1bb2baa357c9aac7e5d046630ffac85. Reason for revert: https://bugs.documentfoundation.org/show_bug.cgi?id=159752#c8 Change-Id: I3f62e179240419d6cc19d9db2bf6d07673d48e05 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163838 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2024-02-23tdf#159752: Add missing NotoSans/NotoSerif fonts backXisco Fauli
They were dropped in 69943f33bf219558d6b219f0eaeda1e25e487b05 "tdf#124591: Update Noto Sans to v2.012" and 96aba2de78ffa641f6c0c898b99158715b2f2703 "tdf#124591: Update Noto Serif to v2.012" for no apparent reason. Re-add them since they are still available upstream Change-Id: Ifd5eb72bd95be96f2ff965b17846cf76aacb0c7d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163825 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-01-17tdf#159243 fix packaging of Noto fonts/fix Armenian UI on macOSChristian Lohmaier
different packages must not share the same package name Packages create corresponding packagename.filelist files that are used during the installset creation process. When multiple packages share the same name, it is random (depending on the order make decides to build the targets) which package will actually be included in the installation set. The last package will "win" and have its file stored in the filelist and thus will be part of the installation set, all others will not be considered. Change-Id: Ieffd2addf6d59916c0c1fe01c64866472ff23803 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162206 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2023-09-26tdf#124591: Update Noto Sans to v2.012Khaled Hosny
from: https://github.com/notofonts/latin-greek-cyrillic/releases/tag/NotoSans-v2.012 Change-Id: Icdd604614a97071c0ff703eb9fe2468137826489 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157268 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org>