📄 gldrawscale.hpp
字号:
/* * =========================================================================== * PRODUCTION $Log: gldrawscale.hpp,v $ * PRODUCTION Revision 1000.1 2004/06/01 19:49:52 gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.7 * PRODUCTION * =========================================================================== */#ifndef GUI_OPENGL___GLDRAWSCALE__HPP#define GUI_OPENGL___GLDRAWSCALE__HPP/* $Id: gldrawscale.hpp,v 1000.1 2004/06/01 19:49:52 gouriano Exp $* ===========================================================================** PUBLIC DOMAIN NOTICE* National Center for Biotechnology Information** This software/database is a "United States Government Work" under the* terms of the United States Copyright Act. It was written as part of* the author's official duties as a United States Government employee and* thus cannot be copyrighted. This software/database is freely available* to the public for use. The National Library of Medicine and the U.S.* Government have not placed any restriction on its use or reproduction.** Although all reasonable efforts have been taken to ensure the accuracy* and reliability of the software and data, the NLM and the U.S.* Government do not and cannot warrant the performance or results that* may be obtained by using this software or data. The NLM and the U.S.* Government disclaim all warranties, express or implied, including* warranties of performance, merchantability or fitness for any particular* purpose.** Please cite the author in any work or product based on this material.** ===========================================================================** Author: Philip Johnson** File Description: 'gldrawscale' -- contains class to nicely draw a scale* on screen (ie. sequence coordinates).** ---------------------------------------------------------------------------*/#include <corelib/ncbistd.hpp>#include <gui/gui.hpp>/** @addtogroup GUI_OPENGL * * @{ */BEGIN_NCBI_SCOPEclass IGlFont;//class CGlDrawScale implements a routine to nicely draw a scale (numbers +//tickmarks) for a generic coordinate system. Intervals between marked//numbers are normalized and, depending on the options supplied at//construction, the numbers are abbreviated using the SI symbols (ie, 'k'//== 10^3).class NCBI_GUIOPENGL_EXPORT CGlDrawScale {public: class CCoordConverter { public: virtual ~CCoordConverter(void) {}; virtual int ToGl (int) const = 0; }; enum EAbbrevType { eNoAbbrev, eCommas, eUseSISymbols, eUseScientificNotation }; CGlDrawScale(IGlFont &font, EAbbrevType useAbbrev); //PRE : conversion routine to be used when going from user coordinates //to modelview coordinates //POST: conversion routine set void SetConverter(CCoordConverter *cc) { m_CoordConverter = cc; }; //PRE : width in pixels; left-most user coordinate, right-most user //coordinate //POST: if converter not set, scale drawn in the following box: left, //-0.5, right, [font-height]; if it is set, scale drawn in: cnv(left), //-0.5, cnv(right), [font-height] void Draw(int width, int left, int right) const;private: unsigned int x_Exp10(unsigned int x) const; void x_Normalize(int &num) const; string x_GenerateLabel(int num, EAbbrevType type) const; unsigned int x_CalcMaxLabelSize(int left, int right, EAbbrevType abbrev) const; IGlFont &m_Font; EAbbrevType m_UseAbbrev; CCoordConverter *m_CoordConverter; float m_MaxDigitWidth; float m_MaxSIPrefixWidth; static const char* sm_SISymbols;};END_NCBI_SCOPE/* @} *//*===========================================================================* $Log: gldrawscale.hpp,v $* Revision 1000.1 2004/06/01 19:49:52 gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.7** Revision 1.7 2004/05/11 18:54:22 dicuccio* Added doxygne modules info** Revision 1.6 2004/05/03 12:43:59 dicuccio* Added #include for gui/gui.hpp** Revision 1.5 2003/09/29 15:20:07 dicuccio* Deprecated gui/scope.hpp. Merged gui/core/types.hpp into gui/types.hpp** Revision 1.4 2003/08/18 19:25:14 dicuccio* Changed CGlFont to IGlFont** Revision 1.3 2003/08/11 19:24:58 johnson* removed 1:1 correspondence between user coordinates & open gl world* coordinates (via CCoordConverter class); allow lefthand user coordinate to* be greater than righthand user coordinate** Revision 1.2 2003/07/16 20:57:04 johnson* protect against multiple inclusion** Revision 1.1 2003/07/01 15:44:16 johnson* initial revision** ===========================================================================*/#endif // GUI_OPENGL___GLDRAWSCALE__HPP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -