color_conf.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:12k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: color_conf.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 21:12:24  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.11
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: color_conf.cpp,v 1000.1 2004/06/01 21:12:24 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Authors:  Mike DiCuccio
  35.  *
  36.  * File Description:
  37.  *
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <gui/widgets/seq_graphic/color_conf.hpp>
  41. #include <util/static_map.hpp>
  42. BEGIN_NCBI_SCOPE
  43.  
  44. typedef pair<const char*, const char*> TColorPair;
  45. static TColorPair sc_Colors[] = {
  46.     TColorPair("BG|AlignSmear",         "white"),
  47.     TColorPair("BG|Alignment",          "white"),
  48.     TColorPair("BG|Comment",            "white"),
  49.     TColorPair("BG|Feature",            "white"),
  50.     TColorPair("BG|Histogram",          "white"),
  51.     TColorPair("BG|MatePair",           "white"),
  52.     TColorPair("BG|PWAlign",            "white"),
  53.     TColorPair("BG|ProtProduct",        "white"),
  54.     TColorPair("BG|Ruler",              "white"),
  55.     TColorPair("BG|SeqGraph",           "lightsteelblue"),
  56.     TColorPair("BG|SeqSegment",         "white"),
  57.     TColorPair("Background",            "white"),
  58.     TColorPair("FG|AlignSmear",         "red"),
  59.     TColorPair("FG|Alignment",          "red"),
  60.     TColorPair("FG|Comment",            "red"),
  61.     TColorPair("FG|MatePairDistance",    "light salmon"),
  62.     TColorPair("FG|MatePairLink",        "indian red"),
  63.     TColorPair("FG|MatePairNo",          "light green"),
  64.     TColorPair("FG|MatePairNonUnique",   "red"),
  65.     TColorPair("FG|MatePairOrientation", "indian red"),
  66.     TColorPair("FG|PWAlign",            "light blue"),
  67.     TColorPair("FG|ProtProduct",        "black"),
  68.     TColorPair("FG|SeqGraph",           "blue"),
  69.     TColorPair("FG|SeqSegmentExc",      "black"),
  70.     TColorPair("FG|SeqSegmentInc",      "red"),
  71.     TColorPair("GridHorizontal",        "grey95"),
  72.     TColorPair("GridVertical",          "grey95"),
  73.     TColorPair("Label|AlignSmear",      "blue"),
  74.     TColorPair("Label|Alignment",       "blue"),
  75.     TColorPair("Label|Comment",         "blue"),
  76.     TColorPair("Label|Feature",         "blue"),
  77.     TColorPair("Label|Histogram",       "blue"),
  78.     TColorPair("Label|MatePair",        "blue"),
  79.     TColorPair("Label|PWAlign",         "blue"),
  80.     TColorPair("Label|ProtProduct",     "blue"),
  81.     TColorPair("Label|Ruler",           "blue"),
  82.     TColorPair("Label|SeqGraph",        "blue"),
  83.     TColorPair("Ruler_Grid",            "black"),
  84.     TColorPair("SelLabel|AlignSmear",   "red"),
  85.     TColorPair("SelLabel|Alignment",    "red"),
  86.     TColorPair("SelLabel|Comment",      "red"),
  87.     TColorPair("SelLabel|Feature",      "red"),
  88.     TColorPair("SelLabel|Histogram",    "red"),
  89.     TColorPair("SelLabel|MatePair",     "red"),
  90.     TColorPair("SelLabel|PWAlign",      "red"),
  91.     TColorPair("SelLabel|ProtProduct",  "red"),
  92.     TColorPair("SelLabel|Ruler",        "red"),
  93.     TColorPair("SelLabel|SeqGraph",     "red"),
  94.     TColorPair("SelLabel|SeqSegment",   "red"),
  95.     TColorPair("Selection|AlignSmear",  "black"),
  96.     TColorPair("Selection|Alignment",   "black"),
  97.     TColorPair("Selection|Comment",     "black"),
  98.     TColorPair("Selection|Feature",     "black"),
  99.     TColorPair("Selection|Histogram",   "black"),
  100.     TColorPair("Selection|MatePair",    "black"),
  101.     TColorPair("Selection|PWAlign",     "black"),
  102.     TColorPair("Selection|Panel",       "gray" ),
  103.     TColorPair("Selection|ProtProduct", "black"),
  104.     TColorPair("Selection|Ruler",       "green"),
  105.     TColorPair("Selection|SeqGraph",    "black"),
  106.     TColorPair("Selection|SeqSegment",  "black"),
  107.     TColorPair("Seq|AlignSmear",        "black"),
  108.     TColorPair("Seq|Alignment",         "black"),
  109.     TColorPair("Seq|MatePairDistance",            "black"),
  110.     TColorPair("Seq|MatePairMismatchDistance",    "yellow"),
  111.     TColorPair("Seq|MatePairMismatchNo",          "red"),
  112.     TColorPair("Seq|MatePairMismatchNonUnique",   "yellow"),
  113.     TColorPair("Seq|MatePairMismatchOrientation", "yellow"),
  114.     TColorPair("Seq|MatePairNo",                  "dark green"),
  115.     TColorPair("Seq|MatePairNonUnique",           "black"),
  116.     TColorPair("Seq|MatePairOrientation",         "black"),
  117.     TColorPair("Seq|PWAlign",           "dark blue"),
  118.     TColorPair("Seq|PWAlignMismatch",   "red"),
  119.     TColorPair("Seq|ProtMismatch",      "yellow"),
  120.     TColorPair("Seq|ProtOriginal",      "black"),
  121.     TColorPair("Seq|ProtTranslated",    "white"),
  122.     TColorPair("Seq|SequenceBar",       "white")
  123. };
  124. typedef CStaticArrayMap<const char*, const char*, PCase> TColorMap;
  125. static TColorMap sc_ColorMap(sc_Colors, sizeof(sc_Colors));
  126. string CSeqGraphicColorFactoryDefaults::Get(const string& key) const
  127. {
  128.     TColorMap::const_iterator iter = sc_ColorMap.find(key.c_str());
  129.     if (iter != sc_ColorMap.end()) {
  130.         return CRgbaColor::ColorStrFromName(iter->second);
  131.     }
  132.     return CFeatColorFactoryDefaults::Get(key);
  133. }
  134. CSeqGraphicColorConfig::CSeqGraphicColorConfig(objects::CPluginConfigCache* config_cache, const string& desc)
  135.     : CFeatConfigColor(config_cache, "Graphic View Colors", new CSeqGraphicColorFactoryDefaults(), desc)
  136. {
  137.     // labels
  138.     m_Colors[eLabel_ProtProduct].first = "Label|ProtProduct";
  139.     m_Colors[eLabel_Alignment].first   = "Label|Alignment";
  140.     m_Colors[eLabel_PWAlign].first     = "Label|PWAlign";
  141.     m_Colors[eLabel_AlignSmear].first  = "Label|AlignSmear";
  142.     m_Colors[eLabel_Comment].first     = "Label|Comment";
  143.     m_Colors[eLabel_Feature].first     = "Label|Feature";
  144.     m_Colors[eLabel_SeqGraph].first    = "Label|SeqGraph";
  145.     m_Colors[eLabel_Ruler].first       = "Label|Ruler";
  146.     m_Colors[eLabel_MatePair].first    = "Label|MatePair";
  147.     // Selected label
  148.     m_Colors[eSelLabel_ProtProduct].first = "SelLabel|ProtProduct";
  149.     m_Colors[eSelLabel_Alignment].first   = "SelLabel|Alignment";
  150.     m_Colors[eSelLabel_PWAlign].first     = "SelLabel|PWAlign";
  151.     m_Colors[eSelLabel_AlignSmear].first  = "SelLabel|AlignSmear";
  152.     m_Colors[eSelLabel_Feature].first     = "SelLabel|Feature";
  153.     m_Colors[eSelLabel_SeqGraph].first    = "SelLabel|SeqGraph";
  154.     m_Colors[eSelLabel_SeqSegment].first  = "SelLabel|SeqSegment";
  155.     m_Colors[eSelLabel_MatePair].first    = "SelLabel|MatePair";
  156.     
  157.     // Selection color
  158.     m_Colors[eSelection_ProtProduct].first = "Selection|ProtProduct";
  159.     m_Colors[eSelection_Alignment].first   = "Selection|Alignment";
  160.     m_Colors[eSelection_PWAlign].first     = "Selection|PWAlign";
  161.     m_Colors[eSelection_AlignSmear].first  = "Selection|AlignSmear";
  162.     m_Colors[eSelection_Feature].first     = "Selection|Feature";
  163.     m_Colors[eSelection_SeqGraph].first    = "Selection|SeqGraph";
  164.     m_Colors[eSelection_Histogram].first   = "Selection|Histogram";
  165.     m_Colors[eSelection_SeqSegment].first  = "Selection|SeqSegment";
  166.     m_Colors[eSelection_Ruler].first       = "Selection|Ruler";
  167.     m_Colors[eSelection_Panel].first       = "Selection|Panel";
  168.     m_Colors[eSelection_MatePair].first    = "Selection|MatePair";
  169.         
  170.     // Sequence letters
  171.     m_Colors[eSeq_SequenceBar].first      = "Seq|SequenceBar";
  172.     m_Colors[eSeq_ProtOriginal].first     = "Seq|ProtOriginal";
  173.     m_Colors[eSeq_ProtTranslated].first   = "Seq|ProtTranslated";
  174.     m_Colors[eSeq_ProtMismatch].first     = "Seq|ProtMismatch";
  175.     m_Colors[eSeq_MatePairNo].first  = "Seq|MatePairNo";
  176.     m_Colors[eSeq_MatePairMismatchNo].first 
  177.             = "Seq|MatePairMismatchNo";
  178.     m_Colors[eSeq_MatePairOrientation].first 
  179.             = "Seq|MatePairOrientation";
  180.     m_Colors[eSeq_MatePairMismatchOrientation].first 
  181.             = "Seq|MatePairMismatchOrientation";
  182.     m_Colors[eSeq_MatePairNonUnique].first  
  183.             = "Seq|MatePairNonUnique";
  184.     m_Colors[eSeq_MatePairMismatchNonUnique].first 
  185.             = "Seq|MatePairMismatchNonUnique";
  186.     m_Colors[eSeq_MatePairDistance].first  
  187.             = "Seq|MatePairDistance";
  188.     m_Colors[eSeq_MatePairMismatchDistance].first 
  189.             = "Seq|MatePairMismatchDistance";
  190.     m_Colors[eSeq_PWAlign].first          = "Seq|PWAlign";
  191.     m_Colors[eSeq_PWAlignMismatch].first  = "Seq|PWAlignMismatch";
  192.     // Foreground
  193.     m_Colors[eFG_Alignment].first     = "FG|Alignment";
  194.     m_Colors[eFG_PWAlign].first       = "FG|PWAlign";
  195.     m_Colors[eFG_AlignSmear].first    = "FG|AlignSmear";
  196.     m_Colors[eFG_ProtProduct].first   = "FG|ProtProduct";
  197.     m_Colors[eFG_SeqGraph].first      = "FG|SeqGraph";
  198.     m_Colors[eFG_Comment].first       = "FG|Comment";
  199.     m_Colors[eFG_SeqSegmentInc].first = "FG|SeqSegmentInc";
  200.     m_Colors[eFG_SeqSegmentExc].first = "FG|SeqSegmentExc";
  201.     m_Colors[eFG_MatePairNo].first          = "FG|MatePairNo";
  202.     m_Colors[eFG_MatePairOrientation].first = "FG|MatePairOrientation";
  203.     m_Colors[eFG_MatePairNonUnique].first   = "FG|MatePairNonUnique";
  204.     m_Colors[eFG_MatePairDistance].first    = "FG|MatePairDistance";
  205.     m_Colors[eFG_MatePairLink].first  = "FG|MatePairLink";
  206.     
  207.     // Background Color
  208.     m_Colors[eBG_Alignment].first   = "BG|Alignment";
  209.     m_Colors[eBG_PWAlign].first     = "BG|PWAlign";
  210.     m_Colors[eBG_AlignSmear].first  = "BG|AlignSmear";
  211.     m_Colors[eBG_ProtProduct].first = "BG|ProtProduct";
  212.     m_Colors[eBG_SeqGraph].first    = "BG|SeqGraph";
  213.     m_Colors[eBG_Comment].first     = "BG|Comment";
  214.     m_Colors[eBG_SeqSegment].first  = "BG|SeqSegment";
  215.     m_Colors[eBG_MatePair].first    = "BG|MatePair";
  216.         
  217.     // General
  218.     m_Colors[eBackground].first     = "Background";
  219.     m_Colors[eRuler_Grid].first     = "Ruler_Grid";
  220.     m_Colors[eGridVertical].first   = "GridVertical";
  221.     m_Colors[eGridHorizontal].first = "GridHorizontal";
  222.     LoadCurrentSettings(eLoad_Current);
  223. }
  224. bool CSeqGraphicColorConfig::LoadCurrentSettings(ELoadValueSource src)
  225. {
  226.     CFeatConfigColor::LoadCurrentSettings(src);
  227.     NON_CONST_ITERATE(TColorMap, iter, m_Colors) {
  228.         TColorPair& cp = (*iter).second;
  229.         cp.second = CGlColor( Get( cp.first, src) );
  230.     }
  231.         
  232.     return true;
  233. }
  234. bool CSeqGraphicColorConfig::SaveCurrentSettings(void)
  235. {    
  236.     CFeatConfigColor::SaveCurrentSettings();
  237.     
  238.     
  239.     NON_CONST_ITERATE(TColorMap, iter, m_Colors) {
  240.         TColorPair& cp = (*iter).second;
  241.         Set(cp.first, cp.second.ToString(false));
  242.     }
  243.     
  244.     return true;
  245. }
  246. CGlColor CSeqGraphicColorConfig::GetElementColor(EDisplayElement e) const
  247. {
  248.     if (m_Colors.find(e) != m_Colors.end()) {
  249.         TColorPair p = m_Colors.find(e)->second;
  250.         CGlColor color = p.second;
  251.         
  252.         glColor3f(color.GetRed(), color.GetGreen(), color.GetBlue());
  253.         return color;
  254.     }
  255.     ERR_POST("Bad enumerated argument to CSeqGraphicColorConfig::GetElementColor : " << e);
  256.     return CGlColor();
  257. }
  258. void  CSeqGraphicColorConfig::SetElementColor(EDisplayElement e,  const CGlColor& c)
  259. {
  260.     if (m_Colors.find(e) != m_Colors.end()) {
  261.         m_Colors[e].second = c;
  262.         return;
  263.     }
  264.     ERR_POST("Bad enumerated argument to CSeqGraphicColorConfig::SetElementColor : " << e);
  265. }
  266. END_NCBI_SCOPE
  267. /*
  268.  * ===========================================================================
  269.  * $Log $
  270.  *
  271.  * Revision 1.1  2003/10/31 14:07:49  dicuccio
  272.  * Initial revision
  273.  *
  274.  * ===========================================================================
  275.  */