/***************************************************************************** # Copyright (C) 1994-2008 by David Gordon. # All rights reserved. # # This software is part of a beta-test version of the Consed/Autofinish # package. It should not be redistributed or # used for any commercial purpose, including commercially funded # sequencing, without written permission from the author and the # University of Washington. # # This software is provided ``AS IS'' and any express or implied # warranties, including, but not limited to, the implied warranties of # merchantability and fitness for a particular purpose, are disclaimed. # In no event shall the authors or the University of Washington be # liable for any direct, indirect, incidental, special, exemplary, or # consequential damages (including, but not limited to, procurement of # substitute goods or services; loss of use, data, or profits; or # business interruption) however caused and on any theory of liability, # whether in contract, strict liability, or tort (including negligence # or otherwise) arising in any way out of the use of this software, even # if advised of the possibility of such damage. # # Building Consed from source is error prone and not simple which is # why I provide executables. Due to time limitations I cannot # provide any assistance in building Consed. Even if you do not # modify the source, you may introduce errors due to using a # different version of the compiler, a different version of motif, # different versions of other libraries than I used, etc. For this # reason, if you discover Consed bugs, I can only offer help with # those bugs if you first reproduce those bugs with an executable # provided by me--not an executable you have built. # # Modifying Consed is also difficult. Although Consed is modular, # some modules are used by many other modules. Thus making a change # in one place can have unforeseen effects on many other features. # It may takes months for you to notice these other side-effects # which may not seen connected at all. It is not feasable for me to # provide help with modifying Consed sources because of the # potentially huge amount of time involved. # #*****************************************************************************/ // // colormode.cpp // // implementation for ColorMode objects // // gordon (orig) Dec-94 // #include #include "colormode.h" #include "contig.h" #include "colorDefaults.h" #include "consedParameters.h" #include "guiapp.h" ColorMode :: ColorMode() { pColorEditCursor_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMode_editCursorForeground_, ColorDefaults::pGetColorDefaults()->soColorMode_editCursorBackground_ ); } GuiColorText* ColorMode :: pGuiColorTextCursorGet() { return pColorEditCursor_; } GuiColorText* ColorMeansQuality :: pGetGuiColorTextForConsensus( Contig* pContig, int nConsPos ) { GuiColorText* pColorText; int nQual = pContig->ntGetCons( nConsPos ).qualGetQuality(); if (nQual < 5 ) pColorText = pColorConsensus0_4_; else if (nQual < 10 ) pColorText = pColorConsensus5_9_; else if (nQual < 15 ) pColorText = pColorConsensus10_14_; else if (nQual < 20 ) pColorText = pColorConsensus15_19_; else if (nQual < 25 ) pColorText = pColorConsensus20_24_; else if (nQual < 30 ) pColorText = pColorConsensus25_29_; else if (nQual < 35 ) pColorText = pColorConsensus30_34_; else if (nQual < 40 ) pColorText = pColorConsensus35_39_; else if (nQual < 98 ) pColorText = pColorConsensus40_97_; else if (nQual == 98 ) pColorText = pColorConsensus98_; else pColorText = pColorConsensus99_; return( pColorText ); } GuiColorText* ColorMeansMatch::pGuiColorTextGet(LocatedFragment *pLocFrag, const int nConsPos ) { GuiColorText* pColorText; Contig* pContig = pLocFrag->pContig_; if (consedParameters::pGetConsedParameters()->bDimLowQualityEndsOfReads_ && pLocFrag->bIsInLowQualityEndsOfRead( nConsPos ) ) { if (pContig->baseSegArray_.bIsInBaseSegment( nConsPos, pLocFrag) ) { pColorText = pColorLowQualConsensus_; } else { pColorText = pColorDimLowQualityEnds_; } } else if ( consedParameters::pGetConsedParameters()->bDimUnalignedEndsOfReads_ && !pLocFrag->bIsInAlignedPartOfRead( nConsPos ) ) { if (pContig->baseSegArray_.bIsInBaseSegment( nConsPos, pLocFrag) ) { pColorText = pColorLowQualConsensus_; } else { pColorText = pColorDimLowQualityEnds_; } } else if (pContig->baseSegArray_.bIsInBaseSegment( nConsPos, pLocFrag) ) { pColorText = pColorConsensus_; } else if ( toupper( pLocFrag->ntGetFragFromConsPos(nConsPos) ) == toupper( pContig->ntGetCons( nConsPos ) ) ) { pColorText = pColorSame_; } else { pColorText = pColorDifferent_; } return( pColorText ); } ColorMeansMatch :: ColorMeansMatch( ) { pColorSame_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansMatch_same_, "Black"); pColorDifferent_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansMatch_different_, "Black"); pColorDimLowQualityEnds_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansMatch_clippedEnds_, "Black"); pColorConsensus_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansMatch_consensus_, "Black" ); pColorLowQualConsensus_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansMatch_lowQualConsensus_, "Black" ); } GuiColorText* ColorMeansQuality::pGuiColorTextGet(LocatedFragment *pLocFrag, const int nConsPos ) { GuiColorText* pColorText; if (consedParameters::pGetConsedParameters()->bDimLowQualityEndsOfReads_ && pLocFrag->bIsInLowQualityEndsOfRead( nConsPos ) ) pColorText = GAPP->pColorMeansMatch_->pColorDimLowQualityEnds_; else if ( consedParameters::pGetConsedParameters()->bDimUnalignedEndsOfReads_ && !pLocFrag->bIsInAlignedPartOfRead( nConsPos ) ) pColorText = GAPP->pColorMeansMatch_->pColorDimLowQualityEnds_; else { Contig* pContig = pLocFrag->pGetContig(); int nQual = pLocFrag->ntGetFragFromConsPos( nConsPos ).qualGetQuality(); // per Pat, Feb 2000, wanted x'd bases to stay dark if ( pLocFrag->ntGetFragFromConsPos( nConsPos ).cGetBase() == 'x' ) nQual = 0; if ( toupper( pLocFrag->ntGetFragFromConsPos(nConsPos) ) == toupper( pContig->ntGetCons( nConsPos ) ) ) { if (nQual < 5 ) pColorText = pColor0_4_; else if (nQual < 10 ) pColorText = pColor5_9_; else if (nQual < 15 ) pColorText = pColor10_14_; else if (nQual < 20 ) pColorText = pColor15_19_; else if (nQual < 25 ) pColorText = pColor20_24_; else if (nQual < 30 ) pColorText = pColor25_29_; else if (nQual < 35 ) pColorText = pColor30_34_; else if (nQual < 40 ) pColorText = pColor35_39_; else if (nQual < 98 ) pColorText = pColor40_97_; else if (nQual == 98 ) pColorText = pColor98_; else pColorText = pColor99_; } else { if (nQual < 5 ) pColorText = pColorDisagree0_4_; else if (nQual < 10 ) pColorText = pColorDisagree5_9_; else if (nQual < 15 ) pColorText = pColorDisagree10_14_; else if (nQual < 20 ) pColorText = pColorDisagree15_19_; else if (nQual < 25 ) pColorText = pColorDisagree20_24_; else if (nQual < 30 ) pColorText = pColorDisagree25_29_; else if (nQual < 35 ) pColorText = pColorDisagree30_34_; else if (nQual < 40 ) pColorText = pColorDisagree35_39_; else if (nQual < 98 ) pColorText = pColorDisagree40_97_; else if (nQual == 98 ) pColorText = pColorDisagree98_; else pColorText = pColorDisagree99_; } } return( pColorText ); } GuiColorText* ColorMeansQuality :: pGuiColorTextGetBackgroundAgree( const int nQual ) { GuiColorText* pColorText; if (nQual < 5 ) pColorText = pColor0_4_; else if (nQual < 10 ) pColorText = pColor5_9_; else if (nQual < 15 ) pColorText = pColor10_14_; else if (nQual < 20 ) pColorText = pColor15_19_; else if (nQual < 25 ) pColorText = pColor20_24_; else if (nQual < 30 ) pColorText = pColor25_29_; else if (nQual < 35 ) pColorText = pColor30_34_; else if (nQual < 40 ) pColorText = pColor35_39_; else if (nQual < 98 ) pColorText = pColor40_97_; else assert( false ); return( pColorText ); } // this routine gets a guicolortext that will be used just to draw // the bases without background. Thus it cares only about the agreement // with the consensus--not with the quality. GuiColorText* ColorMeansQuality::pGuiColorTextGetForeground(LocatedFragment *pLocFrag, const int nConsPos ) { GuiColorText* pColorText; if (consedParameters::pGetConsedParameters()->bDimLowQualityEndsOfReads_ && pLocFrag->bIsInLowQualityEndsOfRead( nConsPos ) ) return( GAPP->pColorMeansMatch_->pColorDimLowQualityEnds_ ); else if ( consedParameters::pGetConsedParameters()->bDimUnalignedEndsOfReads_ && !pLocFrag->bIsInAlignedPartOfRead( nConsPos ) ) return( GAPP->pColorMeansMatch_->pColorDimLowQualityEnds_ ); else { Contig* pContig = pLocFrag->pGetContig(); // it doesn't matter which of pColor0_4_, pColor5_9_, etc // we use here since they all have the same foreground color--black if ( toupper( pLocFrag->ntGetFragFromConsPos(nConsPos) ) == toupper( pContig->ntGetCons( nConsPos ) ) ) return( pColor0_4_ ); else return( pColorDisagree0_4_ ); } } ColorMeansQuality :: ColorMeansQuality( ) { pColor0_4_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality0_4_ ); pColor5_9_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality5_9_ ); pColor10_14_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality10_14_ ); pColor15_19_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality15_19_ ); pColor20_24_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality20_24_ ); pColor25_29_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality25_29_ ); pColor30_34_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality30_34_ ); pColor35_39_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality35_39_ ); pColor40_97_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality40_97_ ); pColor98_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality98_ ); pColor99_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality99_ ); // disagreement colors pColorDisagree0_4_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality0_4_ ); pColorDisagree5_9_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality5_9_ ); pColorDisagree10_14_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality10_14_ ); pColorDisagree15_19_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality15_19_ ); pColorDisagree20_24_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality20_24_ ); pColorDisagree25_29_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality25_29_ ); pColorDisagree30_34_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality30_34_ ); pColorDisagree35_39_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality35_39_ ); pColorDisagree40_97_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality40_97_ ); pColorDisagree98_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality98_ ); pColorDisagree99_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality99_ ); // consensus colors pColorConsensus0_4_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityConsensusForeground_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality0_4_ ); pColorConsensus5_9_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityConsensusForeground_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality5_9_ ); pColorConsensus10_14_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityConsensusForeground_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality10_14_ ); pColorConsensus15_19_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityConsensusForeground_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality15_19_ ); pColorConsensus20_24_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityConsensusForeground_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality20_24_ ); pColorConsensus25_29_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityConsensusForeground_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality25_29_ ); pColorConsensus30_34_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityConsensusForeground_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality30_34_ ); pColorConsensus35_39_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityConsensusForeground_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality35_39_ ); pColorConsensus40_97_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityConsensusForeground_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality40_97_ ); pColorConsensus98_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityConsensusForeground_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality98_ ); pColorConsensus99_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansQualityConsensusForeground_, ColorDefaults::pGetColorDefaults()->soColorMeansQuality99_ ); } GuiColorText* ColorMeansEdited::pGuiColorTextGetForeground( LocatedFragment *pLocFrag, const int nConsPos ) { return( pGuiColorTextGet( pLocFrag, nConsPos ) ); } GuiColorText* ColorMeansEdited::pGuiColorTextGet(LocatedFragment *pLocFrag, const int nConsPos ) { GuiColorText* pColorText; if (consedParameters::pGetConsedParameters()->bDimLowQualityEndsOfReads_ && pLocFrag->bIsInLowQualityEndsOfRead( nConsPos ) ) pColorText = GAPP->pColorMeansMatch_->pColorDimLowQualityEnds_; else if ( consedParameters::pGetConsedParameters()->bDimUnalignedEndsOfReads_ && !pLocFrag->bIsInAlignedPartOfRead( nConsPos ) ) pColorText = GAPP->pColorMeansMatch_->pColorDimLowQualityEnds_; else { Contig* pContig = pLocFrag->pGetContig(); int nQual = pLocFrag->ntGetFragFromConsPos( nConsPos ).qualGetQuality(); if ( toupper( pLocFrag->ntGetFragFromConsPos(nConsPos) ) == toupper( pContig->ntGetCons( nConsPos ) ) ) { if (nQual == 99 ) pColorText = pColorAgree99_; else if (nQual == 98) pColorText = pColorAgree98_; else pColorText = pColorAgreeUnedited_; } else { if (nQual == 99) pColorText = pColorDisagree99_; else if (nQual == 98) pColorText = pColorDisagree98_; else pColorText = pColorDisagreeUnedited_; } } return( pColorText ); } ColorMeansEdited :: ColorMeansEdited( ) { pColorDisagreeUnedited_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansEditedDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansEditedUnedited_ ); pColorDisagree98_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansEditedDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansEdited98_ ); pColorDisagree99_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansEditedDisagree_, ColorDefaults::pGetColorDefaults()->soColorMeansEdited99_ ); pColorAgreeUnedited_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansEditedAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansEditedUnedited_ ); pColorAgree98_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansEditedAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansEdited98_ ); pColorAgree99_ = new GuiColorText( ColorDefaults::pGetColorDefaults()->soColorMeansEditedAgree_, ColorDefaults::pGetColorDefaults()->soColorMeansEdited99_ ); }