1. 25 Apr, 2012 1 commit
    • Dick Hollenbeck's avatar
      I was disappointed when I disassembled the code using the KiROUND() inline function · e3b6385c
      Dick Hollenbeck authored
      solution to see that it was not pre-computing constants when used in static initializers.
      
      So we have two use cases, and need two solutions to be optimal, since the compiler 
      is too stupid to do the right thing.
      
      I think we need something else for compile time computable constants, to be optimal 
      in both use cases.  There is quite a bit of code savings by using a macro for that 
      situation from my testing.  To fully capitalize on this, we need to go back and make 
      Mm2mils() and what not macros also, or have MACRO versions of them too.
      e3b6385c
  2. 24 Apr, 2012 2 commits
  3. 23 Apr, 2012 1 commit
  4. 22 Apr, 2012 1 commit
  5. 19 Apr, 2012 3 commits
    • Dick Hollenbeck's avatar
      todo · a9d1f478
      Dick Hollenbeck authored
      a9d1f478
    • Dick Hollenbeck's avatar
      missing include · e5947326
      Dick Hollenbeck authored
      e5947326
    • Dick Hollenbeck's avatar
      // Dick Hollenbeck's KiROUND R&D · c24863c0
      Dick Hollenbeck authored
      // This provides better project control over rounding to int from double
      // than wxRound() did.  This scheme provides better logging in Debug builds
      // and it provides for compile time calculation of constants.
      
      
      #include <stdio.h>
      #include <assert.h>
      #include <limits.h>
      
      //-----<KiROUND KIT>------------------------------------------------------------
      
      /**
       * KiROUND
       * rounds a floating point number to an int using
       * "round halfway cases away from zero".
       * In Debug build an assert fires if will not fit into an int.
       */
      
      #if defined( DEBUG )
      
      // DEBUG: a macro to capture line and file, then calls this inline
      
      static inline int KiRound( double v, int line, const char* filename )
      {
          v = v < 0 ? v - 0.5 : v + 0.5;
          if( v > INT_MAX + 0.5 )
          {
              printf( "%s: in file %s on line %d, val: %.16g too ' > 0 ' for int\n", __FUNCTION__, filename, line, v );
          }
          else if( v < INT_MIN - 0.5 )
          {
              printf( "%s: in file %s on line %d, val: %.16g too ' < 0 ' for int\n", __FUNCTION__, filename, line, v );
          }
          return int( v );
      }
      
      #define KiROUND( v )    KiRound( v, __LINE__, __FILE__ )
      
      #else
      
      // RELEASE: a macro so compile can pre-compute constants.
      
      #define KiROUND( v )  int( (v) < 0 ? (v) - 0.5 : (v) + 0.5 )
      
      #endif
      
      
      //-----</KiROUND KIT>-----------------------------------------------------------
      
      // Only a macro is compile time calculated, an inline function causes a static constructor
      // in a situation like this.
      // Therefore the Release build is best done with a MACRO not an inline function.
      int Computed = KiROUND( 14.3 * 8 );
      
      
      int main( int argc, char** argv )
      {
          for( double d = double(INT_MAX)-1;  d < double(INT_MAX)+8;  d += 2.0 )
          {
              int i = KiROUND( d );
      
              printf( "t: %d  %.16g\n", i, d );
          }
      
          return 0;
      }
      c24863c0
  6. 18 Apr, 2012 2 commits
  7. 17 Apr, 2012 6 commits
  8. 16 Apr, 2012 5 commits
    • Wayne Stambaugh's avatar
      Removal of internal units. · bf5802f1
      Wayne Stambaugh authored
      * Remove internal units from BASE_SCREEN and it's derivatives.
      * Remove internal units from EDA_DRAW_FRAME and it's derivatives.
      * Use build time code to replace internal units conversions.
      * Fix scaling bug in page layout sample window that I created in my
        last commit.
      bf5802f1
    • Wayne Stambaugh's avatar
      More internal unit improvements. · 6468805c
      Wayne Stambaugh authored
      * Move all convert from user to internal units into base_units.cpp.
      * Remove internal units parameters from all moved conversion functions.
      * Revise all source code that calls the moved conversion functions.
      * Remove internal units from all dialog text control helper classes.
      6468805c
    • jean-pierre charras's avatar
      Fix a serious bug in EDA_RECT::Intersects · 5d5eb7d3
      jean-pierre charras authored
      Kicad manager: code cleaning. Dead code removed and minor fixes. support of new .kicad_brd extension.
      5d5eb7d3
    • Dick Hollenbeck's avatar
      work on footprint plugin API · a42490e0
      Dick Hollenbeck authored
      a42490e0
    • Wayne Stambaugh's avatar
      Pcbnew nanometer internal unit fixes. · 8c0dc01f
      Wayne Stambaugh authored
      * Scale page reference border and title block, grid sizes, and zoom factors
        correctly for nanometers.
      8c0dc01f
  9. 15 Apr, 2012 1 commit
  10. 13 Apr, 2012 2 commits
    • Wayne Stambaugh's avatar
      More internal unit improvements. · 57d75a75
      Wayne Stambaugh authored
      * Move all convert from internal to user units functions into separate file.
      * Remove internal units parameter from all moved conversion functions.
      * Revise all source code that calls the moved conversion functions.
      * Compile these conversion routines separately for the appropriate pcb or
        schematic internal units.
      * Move internal units specific status bar update code into the appropriate
        application for updating the status bar.
      * Move millimeter user units rounding function to common.cpp.
      57d75a75
    • jean-pierre charras's avatar
      Eeschema: BOM list generation: some fixes and enhancements. · b28e976e
      jean-pierre charras authored
      drawframe.cpp: commit a fix about scrollbars  from lajos kamocsay
      b28e976e
  11. 12 Apr, 2012 2 commits
  12. 11 Apr, 2012 8 commits
  13. 10 Apr, 2012 1 commit
  14. 09 Apr, 2012 2 commits
  15. 08 Apr, 2012 3 commits