COIN-OR::LEMON - Graph Library

Changeset 1596:44897b1ba4e2 in lemon-0.x


Ignore:
Timestamp:
07/27/05 13:19:35 (14 years ago)
Author:
Hegyi Péter
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2100
Message:

Sorry for the previous commit, it was not ready yet, but that damned up arrow... So in this new revision string-double and double-string conversion is corrected to a more C++ way.

Location:
gui
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • gui/graph_displayer_canvas-edge.cc

    r1595 r1596  
    120120              edgemap_to_edit=mapname;
    121121              double number=(*(mapstorage.edgemap_storage)[mapname])[i];
    122 //            int length=1;
    123 //            //if number is smaller than one, length would be negative, or invalid
    124 //            if(number>=1)
    125 //              {
    126 //                length=(int)(floor(log(number)/log(10)))+1;
    127 //              }
    128 //            int maxpos=(int)(pow(10,length-1));
    129 //            int strl=length+1+RANGE;
    130 //            char * str=new char[strl];
    131 //            str[length]='.';
    132 //            str[strl]='\0';
    133      
    134 //            for(int j=0;j<strl;j++)
    135 //              {
    136 //                if(j!=length)
    137 //                  {
    138 //                    if((number-(int)number)>ALMOST_ONE)
    139 //                      {
    140 //                        number=round(number);
    141 //                      }
    142 //                    int digit=(int)(number/maxpos);
    143 //                    str[j]=(digit+'0');
    144 //                    number-=digit*maxpos;
    145 //                    number*=10;
    146 //                  }
    147 //              }
    148 //                    edgetextmap[i]->property_text().set_value(str);
    149122
    150123              std::ostringstream ostr;
    151124              ostr << number;
    152 
     125             
    153126              edgetextmap[i]->property_text().set_value(ostr.str());
    154127            }
     
    166139        {
    167140          double number=(*(mapstorage.edgemap_storage)[mapname])[edge];
    168           int length=1;
    169           //if number is smaller than one, length would be negative, or invalid
    170           if(number>=1)
    171             {
    172               length=(int)(floor(log(number)/log(10)))+1;
    173             }
    174           int maxpos=(int)(pow(10,length-1));
    175           int strl=length+1+RANGE;
    176           char * str=new char[strl];
    177           str[length]='.';
    178           str[strl]='\0';
    179      
    180           for(int j=0;j<strl;j++)
    181             {
    182               if(j!=length)
    183                 {
    184                   if((number-(int)number)>ALMOST_ONE)
    185                     {
    186                       number=round(number);
    187                     }
    188                   int digit=(int)(number/maxpos);
    189                   str[j]=(digit+'0');
    190                   number-=digit*maxpos;
    191                   number*=10;
    192                 }
    193             }
    194      
    195           edgetextmap[edge]->property_text().set_value(str);
     141
     142          std::ostringstream ostr;
     143          ostr << number;
     144         
     145          edgetextmap[edge]->property_text().set_value(ostr.str());
    196146        }
    197147      else
  • gui/graph_displayer_canvas-event.cc

    r1594 r1596  
    752752                    mapvalue_ch[i]=mapvalue_str[i];
    753753                  }
    754  
    755                 double mapvalue_d=atof(mapvalue_ch);
    756 
     754             
    757755                //if the text in the entry was correct
    758756                if((point_num<=1)&&(valid_double))
    759757                  {
     758                    double mapvalue_d=atof(mapvalue_ch);
     759
     760                    //reconvert the double to string for the correct format
     761                    std::ostringstream ostr;
     762                    ostr << mapvalue_d;
     763
    760764                    //save the value to the correct place
    761765                    switch(actual_tool)
    762766                      {
    763767                      case EDGE_MAP_EDIT:
    764                         edgetextmap[active_edge]->property_text().set_value(mapvalue_str);
     768                        edgetextmap[active_edge]->property_text().set_value(ostr.str());
    765769                        (*(mapstorage.edgemap_storage)[edgemap_to_edit])[active_edge]=mapvalue_d;
    766770                        break;
    767771                      case NODE_MAP_EDIT:
    768                         nodetextmap[active_node]->property_text().set_value(mapvalue_str);
     772                        nodetextmap[active_node]->property_text().set_value(ostr.str());
    769773                        (*(mapstorage.nodemap_storage)[nodemap_to_edit])[active_node]=mapvalue_d;
    770774                        break;
  • gui/graph_displayer_canvas-node.cc

    r1581 r1596  
    150150              nodemap_to_edit=mapname;
    151151              double number=(*actual_map)[i];
    152               int length=1;
    153               //if number is smaller than one, length would be negative, or invalid
    154               if(number>=1)
    155                 {
    156                   length=(int)(floor(log(number)/log(10)))+1;
    157                 }
    158               int maxpos=(int)(pow(10,length-1));
    159               int strl=length+1+RANGE;
    160               char * str=new char[strl];
    161               str[length]='.';
    162               str[strl]='\0';
    163      
    164               for(int j=0;j<strl;j++)
    165                 {
    166                   if(j!=length)
    167                     {
    168 //                    std::cout << (number) << "-" << (int)number << "=" << (number)-(int)number << std::endl;
    169                       if((number-(int)number)>ALMOST_ONE)
    170                         {
    171 //                        std::cout<<"rounding: " <<number<<std::endl;
    172                           number=round(number);
    173                         }
    174                       int digit=(int)(number/maxpos);
    175 //                    std::cout << number << "/" << maxpos << "=" << digit << std::endl;
    176                       str[j]=(digit+'0');
    177                       number-=digit*maxpos;
    178                       number*=10;
    179                     }
    180                 }
    181      
    182               nodetextmap[i]->property_text().set_value(str);
     152
     153              std::ostringstream ostr;
     154              ostr << number;
     155             
     156              nodetextmap[i]->property_text().set_value(ostr.str());
    183157            }
    184158          else
     
    194168        {
    195169          double number=(*actual_map)[node];
    196           int length=1;
    197           //if number is smaller than one, length would be negative, or invalid
    198           if(number>=1)
    199             {
    200               length=(int)(floor(log(number)/log(10)))+1;
    201             }
    202           int maxpos=(int)(pow(10,length-1));
    203           int strl=length+1+RANGE;
    204           char * str=new char[strl];
    205           str[length]='.';
    206           str[strl]='\0';
    207      
    208           for(int j=0;j<strl;j++)
    209             {
    210               if(j!=length)
    211                 {
    212                   if((number-(int)number)>ALMOST_ONE)
    213                     {
    214                       number=round(number);
    215                     }
    216                   int digit=(int)(number/maxpos);
    217                   str[j]=(digit+'0');
    218                   number-=digit*maxpos;
    219                   number*=10;
    220                 }
    221             }
    222      
    223           nodetextmap[node]->property_text().set_value(str);
     170
     171          std::ostringstream ostr;
     172          ostr << number;
     173             
     174          nodetextmap[node]->property_text().set_value(ostr.str());
    224175        }
    225176      else
Note: See TracChangeset for help on using the changeset viewer.