Commit Graph

36 Commits

Author SHA1 Message Date
Dick Hollenbeck c24863c078 // Dick Hollenbeck's KiROUND R&D
// 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;
}
2012-04-19 01:55:45 -05:00
Dick Hollenbeck b8a0ab4c52 switch to <> for includes from "" per conversation with Jean-Pierre and Wayne, adjust search paths 2012-01-22 22:33:36 -06:00
Wayne Stambaugh 8985a1807b Encapsulation and other minor improvements.
* EDA_DRAW_PANEL completely encapsulated.
* Moved OSX m_overlay member from EDA_DRAW_PANEL to EDA_DRAW_FRAME where
  it is used.
* Doxygen comment warning fixes.
2011-12-29 15:11:42 -05:00
Dick Hollenbeck 463c17b807 fix EDA_ITEM::Show() prototype bug, fix KICAD_PLUGIN::Save() problem with netclasses. 2011-12-14 11:25:42 -06:00
Dick Hollenbeck 96bb90dee1 kicad_plugin 2011-12-13 22:29:25 -06:00
Dick Hollenbeck b979d1e0b9 plugin work, accessors 2011-12-12 02:37:05 -06:00
Wayne Stambaugh 2c251196c6 Minor dialog fixes and code cleaning.
* Grammar and spelling fixes in Eeschema, CvPcb, and Pcbnew path and
  library dialog tool tips.
* Translate the French file name subrill.cpp to highlight.cpp.
* Lots of coding style policy fixes.
2011-10-17 16:01:27 -04:00
Wayne Stambaugh 4b853dedb4 Application name capitalization fixes.
* Correct all user strings and comments for the correct capitalization of
  application names according to JP.  They are KiCad, Pcbnew, CvPcb,
  Eeschema, and GerbView.
* Add a note the the user interface policy about the correct capitalization.
2011-09-30 14:15:37 -04:00
Wayne Stambaugh edd35b4e90 PCB common library header rationalization.
* All header files used to create the PCB common library now compile as
  stand alone code.  This prevents the need to define them in a specific
  order to make source code compile properly.  It should also now be
  possible to relocate the source code to build the common PCB library
  to a separate folder.
2011-09-23 09:57:12 -04:00
Wayne Stambaugh cb78c9452b Undo changes from my last commit that caused a trace drag bug. 2011-09-14 11:08:44 -04:00
Wayne Stambaugh efc93aa52b PCBNew locate code refactoring.
* Move various locate functions into the appropriate board item object.
* Unified best zoom for all frames derived from PCB_BASE_FRAME.
* Remove track.cpp as it is no longer needed.
* Dead code removal.
* Remove scary frame window pointer member from board item objects.
* Add draw bounding box to gerber draw item for debugging purposes.
2011-09-13 09:29:43 -04:00
jean-pierre charras 46fcb07bcb Gerbview: export_to_pcbnew enhancement and fixes. 2011-04-23 21:01:41 +02:00
Wayne Stambaugh 67f70fe079 Coding style and Doxygen comment fixes.
* Rename EDA_Rect class to EDA_RECT.
* Rename EDA_TextStruct class to EDA_TEXT.
* Remove duplicate Doxygen comments from sch_sheet_path.cpp.
2011-03-29 15:33:07 -04:00
Wayne Stambaugh 73e38ce98c EESchema code refactoring and coding policy naming fixes.
* Move schematic wire and bus break code into schematic screen object.
* Move schematic test for dangling ends into schematic screen object.
* Remove left over debugging output in schematic screen object.
* Remove unused file eeschema/cleanup.cpp.
* Fix bug in schematic line object hit test algorithm.
* Fix a string concatenation compile error added in r2752.
* Rename class WinEDA_BasicFrame to EDA_BASE_FRAME.
* Rename class WinEDA_DrawFrame to EDA_DRAW_FRAME.
* Rename class WinEDA_DrawPanel to EDA_DRAW_PANEL.
2011-01-21 14:30:59 -05:00
jean-pierre charras 5bab73d638 Eeschema: fix issues in drag command (mainly hotkey command and forgotten wire ends connected to components to drag).
Rename EDA_Rect::Inside to EDA_Rect::Contains ( EDA_Rect::Inside( const EDA_Rect& aRect ) was very ambiguous )
 Fix some Doxygen warnings and erroneous comments; Add comments.
2010-12-20 18:44:25 +01:00
jean-pierre charras 2e2ecdd448 Gerbview: fix most of Doxygen warnings. 2010-12-18 19:47:58 +01:00
jean-pierre charras 8faf1e7296 Gerbview:
Added: in file dialog, multiple file selection.
    Added: Draw mode selector (in left toolbar):
        Raw mode:
            a Gerber image is drawn on screen without buffering.
            Artifacts happen if there are negative items drawn, if more than one  Gerber file is shown.
        Stacked mode:
            each Geber image is drawn in a buffer and after drawn on screen
            No artifact with negative items.
            Each Gerber image covers previous images.
        OR mode (transparency mode):
            each Geber image is drawn in a buffer and after drawn on screen
            No artifact with negative items.
            Each Gerber image is "ORed" with previous images, like in Pcbnew.
    Try to optimize Draw function in buffered modes.
        (Useful for PC that have problems with "blit" graphic function)
    Fix minor issues.
2010-12-15 21:15:24 +01:00
Wayne Stambaugh adb4ad1a7b Schematic object improvements and other minor fixes. 2010-12-10 14:47:44 -05:00
Wayne Stambaugh c79077c9a2 Minor fixes and lots of coding policy changes. 2010-12-08 15:12:46 -05:00
Dick Hollenbeck 636b2d301e function comments, fix ones in *.cpp files until they can be deleted if they exist in the headers 2010-11-12 10:36:43 -06:00
jean-pierre charras f0364c9da6 Gerbview: support for plot lines (currently: not arcs) with a rectangular pen (Yes, it exists!). pcbnew: try to fix an issue when exporting arcs in gencad. 2010-10-25 09:43:50 +02:00
jean-pierre charras bfeaeafe50 Gerbview: enhancements. 2010-10-17 18:42:06 +02:00
jean-pierre charras de37bbad17 Gerbview: fixed an issue with some gerber files. Added Image Justify support (partial support). 2010-10-17 14:32:35 +02:00
jean-pierre charras a911720adf Gerbview: fixed a bug in my previous commit. 2010-10-16 18:21:54 +02:00
jean-pierre charras a8ebad2fc4 Gerbview: added: image polarity, axis select, layer rotation. Code cleanup. 2010-10-16 16:51:22 +02:00
jean-pierre charras 9ec8d53604 Gerbview: Added support for gerber command SR (Step and Repeat) and multiple MOIN and MOMM in file 2010-10-15 20:59:26 +02:00
jean-pierre charras fffd3be6a7 Fixed some issues with arcs (Arcs are a nightmare in graphic applications). 2010-10-11 22:57:25 +02:00
jean-pierre charras 2a216a51b9 Gerbview: added support forSF (scale factor), IO (Image Offset), OF (Offset) and MI (Mirror) commands. 2010-10-10 19:57:54 +02:00
jean-pierre charras cc6cae9b12 Gerbview: added support of mirroring, scaling an offseting RS274X commands 2010-10-09 22:05:03 +02:00
jean-pierre charras 035979d39f More work on Gerbview: code cleaning and cosmetic enhancements. 2010-10-06 19:28:07 +02:00
jean-pierre charras 9f4e57d428 Some cleanup and fixes in gerbview. Cleanup gr_basic.* and added in gr_basic.* a minor modification coming from "EEschema selection.patch". 2010-10-05 13:44:34 +02:00
jean-pierre charras bc0d79d587 finished Draw functions for aperture macros. Now aperture macros are drawn correctly.
Known bug: aperture macros having parameters are incorrect: parameters are not transmited correctly. Work still in progress.
2010-10-03 17:39:06 +02:00
jean-pierre charras 659299ee8f Gerbview: more about apertures macros and draw funtions. 2010-10-01 21:11:30 +02:00
jean-pierre charras 748a2051a5 Gebview: fixed a very minor bug 2010-09-29 21:58:22 +02:00
jean-pierre charras d696ee8cd5 Gerbview: added support og regular polygon aperure definition. 2010-09-28 21:34:16 +02:00
jean-pierre charras b992af3eb3 Gerbview code redesign 2010-09-28 16:42:05 +02:00