BALL
1.4.1
|
00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: standardColorProcessor.h,v 1.32.18.2 2007/03/28 13:51:48 amoll Exp $ 00005 // 00006 00007 #ifndef BALL_VIEW_MODELS_STANDARDCOLORPROCESSOR_H 00008 #define BALL_VIEW_MODELS_STANDARDCOLORPROCESSOR_H 00009 00010 #ifndef BALL_VIEW_MODELS_COLORPROCESSOR_H 00011 # include <BALL/VIEW/MODELS/colorProcessor.h> 00012 #endif 00013 00014 #ifndef BALL_VIEW_DATATYPTE_COLORMAP_H 00015 # include <BALL/VIEW/DATATYPE/colorMap.h> 00016 #endif 00017 00018 #ifndef BALL_KERNEL_RESIDUE_H 00019 # include<BALL/KERNEL/residue.h> 00020 #endif 00021 00022 #ifndef BALL_KERNEL_CHAIN_H 00023 # include<BALL/KERNEL/chain.h> 00024 #endif 00025 00026 #ifndef BALL_KERNEL_MOLECULE_H 00027 # include<BALL/KERNEL/molecule.h> 00028 #endif 00029 00030 #ifndef BALL_KERNEL_SECONDARYSTRUCTURE_H 00031 # include<BALL/KERNEL/secondaryStructure.h> 00032 #endif 00033 00034 00035 namespace BALL 00036 { 00037 namespace VIEW 00038 { 00039 00049 class BALL_VIEW_EXPORT ElementColorProcessor 00050 : public ColorProcessor 00051 { 00052 public: 00053 00054 BALL_CREATE(ElementColorProcessor) 00055 00056 00059 00064 ElementColorProcessor(); 00065 00067 void setTransparency(Size value); 00068 00070 virtual void getColor(const Composite& composite, ColorRGBA& color_to_be_set); 00071 00073 HashMap<Position, ColorRGBA>& getColorMap() { return color_map_;} 00074 00076 const HashMap<Position, ColorRGBA>& getColorMap() const { return color_map_;} 00077 00079 protected: 00080 00081 HashMap<Position, ColorRGBA> color_map_; 00082 }; 00083 00084 00088 class BALL_VIEW_EXPORT ResidueNumberColorProcessor 00089 : public ColorProcessor 00090 { 00091 public: 00092 00093 BALL_CREATE(ResidueNumberColorProcessor) 00094 00095 00096 ResidueNumberColorProcessor(); 00097 00099 virtual void getColor(const Composite& composite, ColorRGBA& color_to_be_set); 00100 00102 void setFirstColor(const ColorRGBA& color) { first_color_ = color;} 00103 00105 void setMiddleColor(const ColorRGBA& color) { middle_color_ = color;} 00106 00108 void setLastColor(const ColorRGBA& color) { last_color_ = color;} 00109 00111 const ColorRGBA& getFirstColor() const { return first_color_;} 00112 00114 const ColorRGBA& getMiddleColor() const { return middle_color_;} 00115 00117 const ColorRGBA& getLastColor() const { return last_color_;} 00118 00120 virtual bool start(); 00121 00122 protected: 00123 bool canUseMeshShortcut_(const Composite& composite); 00124 00125 GeometricObjectList list_; 00126 ColorRGBA first_color_, middle_color_, last_color_; 00127 ColorMap table_; 00128 Residue dummy_residue_; 00129 HashMap<const Residue*, Position> residue_map_; 00130 }; 00131 00133 class BALL_VIEW_EXPORT PositionColorProcessor 00134 : public ColorProcessor 00135 { 00136 public: 00137 00138 BALL_CREATE(PositionColorProcessor) 00139 00140 00141 PositionColorProcessor(); 00142 00144 virtual void getColor(const Composite& composite, ColorRGBA& color_to_be_set); 00145 00147 void setColors(const vector<ColorRGBA>& colors) { colors_ = colors;} 00148 00150 vector<ColorRGBA>& getColors() { return colors_;} 00151 00153 const vector<ColorRGBA>& getColors() const { return colors_;} 00154 00156 bool start(); 00157 00158 protected: 00159 00160 virtual const Composite* getAncestor_(const Composite&) { return 0;} 00161 00162 virtual bool isOK_(const Composite&) { return false;} 00163 00164 vector<ColorRGBA> colors_; 00165 HashMap<const Composite*, Position> composite_to_position_; 00166 }; 00167 00168 00170 class BALL_VIEW_EXPORT ChainColorProcessor 00171 : public PositionColorProcessor 00172 { 00173 public: 00174 00175 BALL_CREATE(ChainColorProcessor) 00176 00177 00178 ChainColorProcessor(); 00179 00180 protected: 00181 00182 virtual const Composite* getAncestor_(const Composite& composite) 00183 { return composite.getAncestor(dummy_chain_);} 00184 00185 virtual bool isOK_(const Composite& composite) { return RTTI::isKindOf<Chain>(composite);} 00186 bool canUseMeshShortcut_(const Composite& composite); 00187 00188 Chain dummy_chain_; 00189 }; 00190 00191 00193 class BALL_VIEW_EXPORT MoleculeColorProcessor 00194 : public PositionColorProcessor 00195 { 00196 public: 00197 00198 BALL_CREATE(MoleculeColorProcessor) 00199 00200 00201 MoleculeColorProcessor(); 00202 00203 protected: 00204 00205 virtual const Composite* getAncestor_(const Composite& composite) 00206 { return composite.getAncestor(dummy_molecule_);} 00207 00208 virtual bool isOK_(const Composite& composite) { return RTTI::isKindOf<Molecule>(composite);} 00209 bool canUseMeshShortcut_(const Composite& composite); 00210 00211 Molecule dummy_molecule_; 00212 }; 00213 00214 00222 class BALL_VIEW_EXPORT ResidueNameColorProcessor 00223 : public ColorProcessor 00224 { 00225 public: 00226 00227 BALL_CREATE(ResidueNameColorProcessor) 00228 00229 00233 ResidueNameColorProcessor(); 00234 00236 void setTransparency(Size value); 00237 00239 virtual void getColor(const Composite& composite, ColorRGBA& color_to_be_set); 00240 00242 StringHashMap<ColorRGBA>& getColorMap() { return color_map_;} 00243 00245 const StringHashMap<ColorRGBA>& getColorMap() const { return color_map_;} 00246 00247 protected: 00248 StringHashMap<ColorRGBA> color_map_; 00249 Residue dummy_residue; 00250 bool canUseMeshShortcut_(const Composite& composite); 00251 }; 00252 00253 00264 class BALL_VIEW_EXPORT AtomChargeColorProcessor 00265 : public InterpolateColorProcessor 00266 { 00267 public: 00268 00269 BALL_CREATE(AtomChargeColorProcessor) 00270 00271 00277 AtomChargeColorProcessor(); 00278 00280 AtomChargeColorProcessor(const AtomChargeColorProcessor& color_Processor); 00281 00283 virtual void getColor(const Composite& composite, ColorRGBA& color_to_be_set); 00284 }; 00285 00286 00297 class BALL_VIEW_EXPORT AtomDistanceColorProcessor 00298 : public ColorProcessor 00299 { 00300 public: 00301 00302 BALL_CREATE(AtomDistanceColorProcessor) 00303 00304 00311 AtomDistanceColorProcessor(); 00312 00314 AtomDistanceColorProcessor(const AtomDistanceColorProcessor& color_Processor); 00315 00322 void setDistance(float distance) { distance_ = distance;} 00323 00326 float getDistance() const; 00327 00338 void setNullDistanceColor(const ColorRGBA& color); 00339 00342 const ColorRGBA& getNullDistanceColor() const; 00343 00354 void setMaxDistanceColor(const ColorRGBA& color); 00355 00360 const ColorRGBA& getMaxDistanceColor() const; 00361 00369 void calculateDistances(); 00370 00377 virtual void addAtom(const Atom& atom); 00378 00380 virtual bool finish(); 00381 00383 virtual void getColor(const Composite& composite, ColorRGBA& color_to_be_set); 00384 00386 bool showSelected() { return show_selection_;} 00387 00389 void setShowSelected(bool state) { show_selection_ = state;} 00390 00393 virtual Processor::Result operator() (GeometricObject*& object); 00394 00395 private: 00396 00397 void colorGeometricObject_(GeometricObject& object); 00398 00399 //_ Colorize the mesh with the computed grid. 00400 virtual void colorMeshFromGrid_(Mesh& mesh); 00401 00402 typedef HashMap<const Atom*, float> AtomDistanceHashMap; 00403 00404 AtomDistanceHashMap atom_2_distance_; 00405 GeometricObjectList list_; 00406 00407 float distance_; 00408 bool show_selection_; 00409 00410 ColorRGBA null_distance_color_; 00411 ColorRGBA full_distance_color_; 00412 }; 00413 00414 00418 class BALL_VIEW_EXPORT CustomColorProcessor 00419 : public ColorProcessor 00420 { 00421 public: 00422 00423 BALL_CREATE(CustomColorProcessor) 00424 00425 CustomColorProcessor() 00426 : ColorProcessor() 00427 {} 00428 00429 bool canUseMeshShortcut_(const Composite&) { return true;} 00430 }; 00431 00432 00436 class BALL_VIEW_EXPORT TemperatureFactorColorProcessor 00437 : public InterpolateColorProcessor 00438 { 00439 public: 00440 00441 BALL_CREATE(TemperatureFactorColorProcessor) 00442 00443 00444 TemperatureFactorColorProcessor(); 00445 00447 virtual void getColor(const Composite& composite, ColorRGBA& color_to_be_set); 00448 }; 00449 00450 00454 class BALL_VIEW_EXPORT OccupancyColorProcessor 00455 : public InterpolateColorProcessor 00456 { 00457 public: 00458 00459 BALL_CREATE(OccupancyColorProcessor) 00460 00461 00462 OccupancyColorProcessor(); 00463 00465 virtual void getColor(const Composite& composite, ColorRGBA& color_to_be_set); 00466 }; 00467 00471 class BALL_VIEW_EXPORT ForceColorProcessor 00472 : public InterpolateColorProcessor 00473 { 00474 public: 00475 00476 BALL_CREATE(ForceColorProcessor) 00477 00478 00479 ForceColorProcessor(); 00480 00482 virtual void getColor(const Composite& composite, ColorRGBA& color_to_be_set); 00483 }; 00484 00485 00489 class BALL_VIEW_EXPORT SecondaryStructureColorProcessor 00490 : public ColorProcessor 00491 { 00492 public: 00493 00494 BALL_CREATE(SecondaryStructureColorProcessor) 00495 00496 00497 SecondaryStructureColorProcessor(); 00498 00500 virtual void getColor(const Composite& composite, ColorRGBA& color_to_be_set); 00501 00503 void setHelixColor(const ColorRGBA& color); 00504 00506 void setCoilColor(const ColorRGBA& color); 00507 00509 void setStrandColor(const ColorRGBA& color); 00510 00512 void setTurnColor(const ColorRGBA& color); 00513 00515 const ColorRGBA& getHelixColor() const; 00516 00518 const ColorRGBA& getCoilColor() const; 00519 00521 const ColorRGBA& getStrandColor() const; 00522 00524 const ColorRGBA& getTurnColor() const; 00525 00527 virtual void setTransparency(Size t); 00528 00529 private: 00530 00531 bool canUseMeshShortcut_(const Composite& composite); 00532 00534 ColorRGBA helix_color_, 00535 coil_color_, 00536 strand_color_, 00537 turn_color_; 00538 00539 SecondaryStructure dummy_ss_; 00540 }; 00541 00542 00546 class BALL_VIEW_EXPORT ResidueTypeColorProcessor 00547 : public ColorProcessor 00548 { 00549 public: 00550 00551 BALL_CREATE(ResidueTypeColorProcessor) 00552 00553 00554 ResidueTypeColorProcessor(); 00555 00557 virtual void getColor(const Composite& composite, ColorRGBA& color_to_be_set); 00558 00560 void setBasicColor(const ColorRGBA& color); 00561 00563 void setAcidicColor(const ColorRGBA& color); 00564 00566 void setPolarColor(const ColorRGBA& color); 00567 00569 void setHydrophobicColor(const ColorRGBA& color); 00570 00572 void setAromaticColor(const ColorRGBA& color); 00573 00575 void setOtherColor(const ColorRGBA& color); 00576 00578 const ColorRGBA& getBasicColor() const; 00579 00581 const ColorRGBA& getAcidicColor() const; 00582 00584 const ColorRGBA& getPolarColor() const; 00585 00587 const ColorRGBA& getHydrophobicColor() const; 00588 00590 const ColorRGBA& getAromaticColor() const; 00591 00593 const ColorRGBA& getOtherColor() const; 00594 00596 virtual void setTransparency(Size t); 00597 00598 private: 00599 00600 bool canUseMeshShortcut_(const Composite& composite); 00601 00603 ColorRGBA basic_color_, 00604 acidic_color_, 00605 polar_color_, 00606 hydrophobic_color_, 00607 aromatic_color_, 00608 other_color_; 00609 00610 Residue dummy_residue_; 00611 }; 00612 00613 # ifndef BALL_NO_INLINE_FUNCTIONS 00614 # include <BALL/VIEW/MODELS/standardColorProcessor.iC> 00615 # endif 00616 00617 } } // namespaces 00618 00619 #endif // BALL_VIEW_MODELS_STANDARDCOLORPROCESSOR_H