void CAtmoDynData::CalculateDefaultZones() { int i; int num_cols_top; int num_cols_bottom; int num_rows; CAtmoZoneDefinition *zoneDef; if(!m_pAtmoConfig) return; m_pAtmoConfig->UpdateZoneDefinitionCount(); num_cols_top = m_pAtmoConfig->getZonesTopCount(); num_cols_bottom = m_pAtmoConfig->getZonesBottomCount(); num_rows = m_pAtmoConfig->getZonesLRCount(); for(int zone=0; zone < m_pAtmoConfig->getZoneCount(); zone++) { zoneDef = m_pAtmoConfig->getZoneDefinition(zone); if(zoneDef) zoneDef->Fill(0); } // the zones will be counted starting from top left - in clockwise order around the display // the summary channel will be the last one (in the center) i = 0; // top zones from left to right for(int c=0;c<num_cols_top;c++) { zoneDef = m_pAtmoConfig->getZoneDefinition(i); i++; if(zoneDef) { int l = (c * CAP_WIDTH)/num_cols_top; int r = ((c+1) * CAP_WIDTH)/num_cols_top; zoneDef->FillGradientFromTop( ATMO_MAX( l - CAP_ZONE_OVERLAP, 0) , ATMO_MIN( r + CAP_ZONE_OVERLAP, CAP_WIDTH ) ); } } // right zones from top to bottom for(int r=0;r<num_rows;r++) { zoneDef = m_pAtmoConfig->getZoneDefinition(i); i++; if(zoneDef) { int t = (r * CAP_HEIGHT)/num_rows; int b = ((r+1) * CAP_HEIGHT)/num_rows; zoneDef->FillGradientFromRight( ATMO_MAX( t - CAP_ZONE_OVERLAP, 0) , ATMO_MIN( b + CAP_ZONE_OVERLAP, CAP_HEIGHT) ); } } // bottom zones from RIGHT to LEFT! for(int c=(num_cols_bottom-1);c>=0;c--) { zoneDef = m_pAtmoConfig->getZoneDefinition(i); i++; if(zoneDef) { int l = (c * CAP_WIDTH)/num_cols_bottom; int r = ((c+1) * CAP_WIDTH)/num_cols_bottom; zoneDef->FillGradientFromBottom( ATMO_MAX( l - CAP_ZONE_OVERLAP, 0 ), ATMO_MIN( r + CAP_ZONE_OVERLAP, CAP_WIDTH ) ); } } // left zones from bottom to top! for(int r=(num_rows-1);r>=0;r--) { zoneDef = m_pAtmoConfig->getZoneDefinition(i); i++; if(zoneDef) { int t = (r * CAP_HEIGHT)/num_rows; int b = ((r+1) * CAP_HEIGHT)/num_rows; zoneDef->FillGradientFromLeft( ATMO_MAX( t - CAP_ZONE_OVERLAP, 0 ), ATMO_MIN( b + CAP_ZONE_OVERLAP, CAP_HEIGHT ) ); } } if(m_pAtmoConfig->getZoneSummary()) { // and last the summary zone if requested! zoneDef = m_pAtmoConfig->getZoneDefinition(i++); if(zoneDef) zoneDef->Fill(255); } }