DeepCover Embedded Security in IoT: Public-key Secured Data Paths

Dependencies:   MaximInterface

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Text.hpp Source File

Text.hpp

00001 /*******************************************************************************
00002 * Copyright (C) Maxim Integrated Products, Inc., All Rights Reserved.
00003 *
00004 * Permission is hereby granted, free of charge, to any person obtaining a
00005 * copy of this software and associated documentation files (the "Software"),
00006 * to deal in the Software without restriction, including without limitation
00007 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
00008 * and/or sell copies of the Software, and to permit persons to whom the
00009 * Software is furnished to do so, subject to the following conditions:
00010 *
00011 * The above copyright notice and this permission notice shall be included
00012 * in all copies or substantial portions of the Software.
00013 *
00014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00015 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00016 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
00017 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
00018 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
00019 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
00020 * OTHER DEALINGS IN THE SOFTWARE.
00021 *
00022 * Except as contained in this notice, the name of Maxim Integrated
00023 * Products, Inc. shall not be used except as stated in the Maxim Integrated
00024 * Products, Inc. Branding Policy.
00025 *
00026 * The mere transfer of this software does not imply any licenses
00027 * of trade secrets, proprietary technology, copyrights, patents,
00028 * trademarks, maskwork rights, or any other form of intellectual
00029 * property whatsoever. Maxim Integrated Products, Inc. retains all
00030 * ownership rights.
00031 *******************************************************************************/
00032 
00033 #ifndef TEXT_HPP
00034 #define TEXT_HPP
00035 
00036 #include <list>
00037 #include <string>
00038 #include "Graphic.hpp"
00039 
00040 /// Text graphical primitive.
00041 class Text : public Graphic {
00042 public:
00043   Text();
00044 
00045   /// @name Text
00046   /// @brief Text string to display.
00047   /// @details
00048   /// Only printable ASCII characters and the line feed ('\n') will be displayed.
00049   /// @{
00050 
00051   const std::string & text() const { return text_; }
00052   void setText(const std::string & text);
00053 
00054   /// @}
00055 
00056   /// @name Word wrap
00057   /// @brief
00058   /// Lines will be wrapped when they are too long to be displayed with the
00059   /// current width.
00060   /// @{
00061 
00062   bool wordWrap() const { return wordWrap_; }
00063   void setWordWrap(bool wordWrap);
00064 
00065   /// @}
00066 
00067   /// @name Character spacing
00068   /// @brief Spacing in pixels between characters.
00069   /// @{
00070 
00071   int charSpacing() const { return charSpacing_; }
00072   void setCharSpacing(int charSpacing);
00073 
00074   /// @}
00075 
00076   /// @{
00077   /// Spacing in pixels between lines.
00078   int lineSpacing () const { return lineSpacing_; }
00079   void setLineSpacing(int lineSpacing );
00080   /// @}
00081 
00082   /// @brief Preferred width and height calculated after word wrapping.
00083   /// @{
00084 
00085   int preferredWidth() const;
00086   int preferredHeight() const;
00087 
00088   /// @}
00089 
00090 protected:
00091   virtual void resized();
00092   virtual void doRender(Bitmap & bitmap, int xOffset, int yOffset) const;
00093 
00094 private:
00095   void calculateLayout() const;
00096 
00097   std::string text_;
00098   bool wordWrap_;
00099   int charSpacing_;
00100   int lineSpacing_;
00101 
00102   mutable std::list<std::string> textLines_;
00103   mutable int preferredWidth_;
00104   mutable int preferredHeight_;
00105 };
00106 
00107 #endif