Blog: LDView - Packaged for Linux: ldview-1-no-force-zoomtofit.patch

File ldview-1-no-force-zoomtofit.patch, 2.9 KB (added by retracile, 10 years ago)
  • LDLib/LDSnapshotTaker.cpp

    diff --git a/LDLib/LDSnapshotTaker.cpp b/LDLib/LDSnapshotTaker.cpp
    index 3a8301c..a30da1e 100644
    a b bool LDSnapshotTaker::saveImage(void) 
    276276                                stripTrailingPathSeparators(saveDir);
    277277                        }
    278278                }
     279        // Special case for the -ca and -cg options to convert them to proper
     280        // argument names
    279281                for (i = 0; i < count; i++)
    280282                {
    281283                        char *arg = unhandledArgs->stringAtIndex(i);
    bool LDSnapshotTaker::saveImage(void) 
    295297                        {
    296298                                sprintf(newArg, "-%s=%s", CAMERA_GLOBE_KEY, arg + 3);
    297299                                TCUserDefaults::addCommandLineArg(newArg);
    298                                 zoomToFit = true;
    299300                        }
    300301                }
    301302                for (i = 0; i < count && (saveSnapshots || !retValue); i++)
    bool LDSnapshotTaker::saveImage(void) 
    405406        return retValue;
    406407}
    407408
    408 bool LDSnapshotTaker::shouldZoomToFit(bool zoomToFit)
     409bool LDSnapshotTaker::shouldZoomToFit()
    409410{
    410         char *cameraGlobe = TCUserDefaults::stringForKey(CAMERA_GLOBE_KEY, NULL,
    411                 false);
    412         bool retValue = false;
    413 
    414         if (zoomToFit)
    415         {
    416                 retValue = true;
    417         }
    418         else if (cameraGlobe)
    419         {
    420                 float globeRadius;
    421 
    422                 if (sscanf(cameraGlobe, "%*f,%*f,%f", &globeRadius) == 1)
    423                 {
    424                         retValue = true;
    425                 }
    426         }
    427         delete cameraGlobe;
    428         return retValue;
     411    int zoomToFit = TCUserDefaults::longForKey(SAVE_ZOOM_TO_FIT_KEY, -1, false);
     412    if (zoomToFit < 0 ) {
     413        // default to not ZoomToFit unless we have a reason to do otherwise
     414        zoomToFit = 0;
     415        // User didn't explicitly specify, default to something sensible based
     416        // on the other arguments the user did pass.
     417        // -cg should default to ZoomToFit to be compatible with L3P
     418        char *cameraGlobe = TCUserDefaults::stringForKey(CAMERA_GLOBE_KEY, NULL,
     419            false);
     420        if (cameraGlobe) {
     421            zoomToFit = 1;
     422            delete cameraGlobe;
     423        }
     424        // But if the center of the model has been specified, ZoomToFit would conflict with it
     425        char *modelCenter = TCUserDefaults::stringForKey(MODEL_CENTER_KEY, NULL, false);
     426        if (modelCenter) {
     427            zoomToFit = 0;
     428            delete modelCenter;
     429        }
     430    }
     431    return (bool) zoomToFit;
    429432}
    430433
    431434bool LDSnapshotTaker::saveImage(
    bool LDSnapshotTaker::saveStepImage( 
    633636        {
    634637                bool saveAlpha = false;
    635638                TCByte *buffer = grabImage(imageWidth, imageHeight,
    636                         shouldZoomToFit(zoomToFit), NULL, &saveAlpha);
     639                        shouldZoomToFit(), NULL, &saveAlpha);
    637640
    638641                if (buffer)
    639642                {
  • LDLib/LDSnapshotTaker.h

    diff --git a/LDLib/LDSnapshotTaker.h b/LDLib/LDSnapshotTaker.h
    index 2fda699..9ec26df 100644
    a b protected: 
    7575        bool canSaveAlpha(void);
    7676        void renderOffscreenImage(void);
    7777        bool imageProgressCallback(CUCSTR message, float progress);
    78         bool shouldZoomToFit(bool zoomToFit);
     78        bool shouldZoomToFit();
    7979        void grabSetup(void);
    8080        bool saveStepImage(const char *filename, int imageWidth, int imageHeight,
    8181                bool zoomToFit);