/* KLayout Layout Viewer Copyright (C) 2006-2025 Matthias Koefferlein This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef HDR_dbMALY #define HDR_dbMALY #include "dbPoint.h" #include "dbTrans.h" #include "dbBox.h" #include "tlException.h" #include "tlInternational.h" #include "tlString.h" #include "tlAssert.h" #include #include namespace db { /** * @brief The diagnostics interface for reporting problems in the reader or writer */ class MALYDiagnostics { public: virtual ~MALYDiagnostics (); /** * @brief Issue an error with positional information */ virtual void error (const std::string &txt) = 0; /** * @brief Issue a warning with positional information */ virtual void warn (const std::string &txt, int warn_level) = 0; }; /** * @brief A class representing a title field on a mask */ class MALYTitle { public: /** * @brief Default constructor */ MALYTitle () : width (0.0), height (0.0), pitch (0.0), type (String), font (Standard) { } /** * @brief The type of the title */ enum Type { String = 0, // A user-defined string Date = 1, // The date Serial = 2 // A serial number }; /** * @brief The font to be used */ enum Font { FontNotSet = 0, // Undef Standard = 1, // Standard font Native = 2 // Native tool font }; /** * @brief The string for "String" type */ std::string string; /** * @brief The transformation of the title * * The origin of the title is supposed to be in the center of * the title field. */ db::DTrans transformation; /** * @brief Optional font parameters: character width */ double width; /** * @brief Optional font parameters: character height */ double height; /** * @brief Optional font parameters: character pitch */ double pitch; /** * @brief The type of the title */ Type type; /** * @brief The font to be used */ Font font; /** * @brief Returns a string representing the structure */ std::string to_string () const; }; /** * @brief A class representing a structure (pattern) on a mask */ class MALYStructure { public: /** * @brief Default constructor */ MALYStructure () : nx (1), ny (1), dx (0.0), dy (0.0), layer (-1) { } /** * @brief The (expanded) path of the pattern file */ std::string path; /** * @brief The name of the top cell * If empty, the topcell is determined automatically */ std::string topcell; /** * @brief The pattern window in the original file */ db::DBox size; /** * @brief The transformation needed to place the original file */ db::DCplxTrans transformation; /** * @brief The number of placements in x direction */ int nx; /** * @brief The number of placements in y direction */ int ny; /** * @brief The placement pitch in x direction (if nx > 1) */ double dx; /** * @brief The placement pitch in y direction (if ny > 1) */ double dy; /** * @brief The design name */ std::string dname; /** * @brief The name for the mask process */ std::string mname; /** * @brief The name for the mask tool */ std::string ename; /** * @brief The layer used from the OASIS file * * A value of -1 means "all". */ int layer; /** * @brief Returns a string representing the structure */ std::string to_string () const; }; /** * @brief A class representing one mask */ class MALYMask { public: /** * @brief Default constructor */ MALYMask () : size_um (0.0) { } /** * @brief Size of the mask in micrometers */ double size_um; /** * @brief Name of the mask * * This is also the name of the layer generated */ std::string name; /** * @brief The list of structures */ std::list structures; /** * @brief The list of titles */ std::list titles; /** * @brief Returns a string representing the mask */ std::string to_string () const; }; /** * @brief A class representing the MALY file */ class MALYData { public: /** * @brief Default constructor */ MALYData () { } /** * @brief The masks defined by the file */ std::list masks; /** * @brief Returns a string representing the data set */ std::string to_string () const; }; } #endif