www.pudn.com > Tierazon-v29.zip > rsx_file.c
/////////////////////////////////////////////////////////////// // rsx_file.c // // By: stephen c. ferguson // http://home1.gte.net/itriazon/ // email: itriazon@gte.net // ///////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// #define STRICT #define WIN32_LEAN_AND_MEAN #include#include #include "rsx_file.h" /* LibMain is called if Windows (un)load the DLL or threads are created The function LibMain is also defined in the library */ int APIENTRY LibMain(HANDLE hInst, DWORD fdwReason, LPVOID lpReserved) { if (fdwReason == DLL_PROCESS_ATTACH) { wsprintf (cstr, "LibMain(): DLL loaded"); //MessageBox(NULL, "LibMain(): DLL loaded", "Attach", MB_OK); } else if (fdwReason == DLL_PROCESS_DETACH) { wsprintf (cstr, "LibMain(): DLL unloaded"); //MessageBox(NULL, "LibMain(): DLL unloaded", "Detach", MB_OK); } __real__ ci1 = 0.0; __imag__ ci1 = 1.0; return TRUE; } RGB_IDATA CALLBACK _formulae(double cx, double cy, double zx, double zy, int _px, int _py) { //MessageBox(NULL, "step 1", "bug", MB_OK); px = _px; py = _py; __real__ c = cx; __imag__ c = cy; x = __real__ z = zx; y = __imag__ z = zy; limit = sqrt(__real__ z * __real__ z + __imag__ z * __imag__ z); n_color=0; n_color_x = 0; n_color_y = 0; n_color_z = 0; n_color_z1 = 0; rj = gj = bj = 0; dt = 0; tot = xtot = ytot = ztot = xavg = yavg = zavg = avg = 0; zsav1 = zsav = xsav = ysav = d_color_x = d_color_y = d_color_z = 0.0; a = b = 0.0; t = t1 = t2 = 0; //MessageBox(NULL, "step 1.3", "bug", MB_OK); dStrands_HI = limit + dStrands; dStrands_LO = limit - dStrands; dStrands_df = (dStrands_HI - dStrands_LO)/2; //return; //sprintf (cstr, "1.) dStrands=%f, cx=%f, cy=%f.", dStrands, cx, cy); //MessageBox(NULL, cstr, "Debug", MB_OK); //__real__ t = -1; //__imag__ t = 0; //t1 = z * t; dStrands_HI_cx = fabs(cx) + dStrands; dStrands_HI_cy = fabs(cy) + dStrands; dStrands_LO_cx = fabs(cx) - dStrands; dStrands_LO_cy = fabs(cy) - dStrands ; dStrands_cxd = dStrands_HI_cx - dStrands_LO_cx; dStrands_cyd = dStrands_HI_cy - dStrands_LO_cy; limit_cxd = dStrands_LO_cx + dStrands_cxd/2; limit_cyd = dStrands_LO_cy + dStrands_cyd/2; //sprintf (cstr, "2.) dStrands=%f, cx=%f, cy=%f.", dStrands, cx, cy); //MessageBox(NULL, cstr, "Debug", MB_OK); //sprintf (cstr, "formula = %d", formula); //MessageBox(NULL, cstr, "bug", MB_OK); dif_save = xdif = ydif = zdif = dif = ssq1 = ssq2 = (double) bailout-1; n_color = 0; //MessageBox(NULL, "step 2", "bug", MB_OK); switch (formula) { case 1: Formula_01(); break; case 2: Formula_02(); break; case 3: Formula_03(); break; case 4: Formula_04(); break; case 5: Formula_05(); break; case 6: Formula_06(); break; case 7: Formula_07(); break; case 8: Formula_08(); break; case 9: Formula_09(); break; case 10: Formula_10(); break; case 11: Formula_11(); break; case 12: Formula_12(); break; case 13: Formula_13(); break; case 14: Formula_14(); break; case 15: Formula_15(); break; case 16: Formula_16(); break; case 17: Formula_17(); break; case 18: Formula_18(); break; case 19: Formula_19(); break; case 20: Formula_20(); break; case 21: Formula_21(); break; case 22: Formula_22(); break; case 23: Formula_23(); break; case 24: Formula_24(); break; case 25: Formula_25(); break; case 26: Formula_26(); break; case 27: Formula_27(); break; case 28: Formula_28(); break; case 29: Formula_29(); break; case 30: Formula_30(); break; case 31: Formula_31(); break; case 32: Formula_32(); break; case 33: Formula_33(); break; case 34: Formula_34(); break; case 35: Formula_35(); break; case 36: Formula_36(); break; case 37: Formula_37(); break; case 38: Formula_38(); break; case 39: Formula_39(); break; case 40: Formula_40(); break; case 41: Formula_41(); break; case 42: Formula_42(); break; case 43: Formula_43(); break; case 44: Formula_44(); break; case 45: Formula_45(); break; case 46: Formula_46(); break; case 47: Formula_47(); break; case 48: Formula_48(); break; case 49: Formula_49(); break; case 50: Formula_50(); break; case 51: Formula_51(); break; case 52: Formula_52(); break; case 53: Formula_53(); break; case 54: Formula_54(); break; case 55: Formula_55(); break; case 56: Formula_56(); break; case 57: Formula_57(); break; case 58: Formula_58(); break; case 59: Formula_59(); break; case 60: Formula_60(); break; case 61: Formula_61(); break; case 62: Formula_62(); break; case 63: Formula_63(); break; case 64: Formula_64(); break; case 65: Formula_65(); break; case 66: Formula_66(); break; case 67: Formula_67(); break; case 68: Formula_68(); break; case 69: Formula_69(); break; case 70: Formula_70(); break; case 71: Formula_71(); break; case 72: Formula_72(); break; case 73: Formula_73(); break; case 74: Formula_74(); break; case 75: Formula_75(); break; case 76: Formula_76(); break; case 77: Formula_77(); break; case 78: Formula_78(); break; case 79: Formula_79(); break; case 80: Formula_80(); break; case 81: Formula_81(); break; case 82: Formula_82(); break; case 83: Formula_83(); break; case 84: Formula_84(); break; case 85: Formula_85(); break; case 86: Formula_86(); break; case 87: Formula_87(); break; case 88: Formula_88(); break; case 89: Formula_89(); break; case 90: Formula_90(); break; case 91: Formula_91(); break; case 92: Formula_92(); break; case 93: Formula_93(); break; case 94: Formula_94(); break; case 95: Formula_95(); break; case 96: Formula_96(); break; case 97: Formula_97(); break; case 98: Formula_98(); break; case 99: Formula_99(); break; case 100: Formula_100(); break; case 101: break; // formula editor, do nothing case 102: //MessageBox(NULL, "step 1", "bug", MB_OK); Formula_102(); break; case 103: Formula_103(); break; case 104: Formula_104(); break; case 105: Formula_105(); break; case 106: Formula_106(); break; case 107: Formula_107(); break; case 108: Formula_108(); break; case 109: Formula_109(); break; case 110: Formula_110(); break; case 111: Formula_111(); break; case 112: Formula_112(); break; case 113: Formula_113(); break; case 114: Formula_114(); break; case 115: Formula_115(); break; case 116: Formula_116(); break; case 117: Formula_117(); break; case 120: Formula_120(); break; case 121: Formula_121(); break; case 122: Formula_122(); break; default: break; } //MessageBox(NULL, "step 3", "bug", MB_OK); if (filter && formula != 101) { __real__ z = xsav; __imag__ z = ysav; Filter_Complete(); } else { j = rj = gj = bj = n_color; xsav = __real__ z; ysav = __imag__ z; } if (fabs(xsav) < minsize) { if (xsav > 0) xsav = minsize; else xsav = -minsize; } if (fabs(ysav) < minsize) { if (ysav > 0) ysav = minsize; else ysav = -minsize; } if (fabs(xsav) > maxsize) { if (xsav > 0) xsav = maxsize; else xsav = -maxsize; } if (fabs(ysav) > maxsize) { if (ysav > 0) ysav = maxsize; else ysav = -maxsize; } if (formula != 101) { switch (filter) { case 27: // Check for a fractal Dimension filter case 28: // standard deviation filter case 33: case 34: case 35: case 36: case 37: case 38: case 48: case 49: FDimension(); break; default: break; } } if (size_x <= 640 && size_y <= 480 && nUsingBuffers) { pXSave[px+py*size_x] = xsav; pYSave[px+py*size_x] = ysav; /* if (px == 1 && py == 1) { sprintf(cstr, "step 1, xsav = %f, ysav=%f, i = %d, rj = %f, gj = %f", xsav, ysav, i, rj, gj); MessageBox(NULL, cstr, "bug", MB_OK); } */ rjData[px+py*size_x] = rj; gjData[px+py*size_x] = gj; bjData[px+py*size_x] = bj; } if (nColorMethod && formula != 101) color_methods(); //MessageBox(NULL, "step 5", "bug", MB_OK); rgbColor.i = j; rgbColor.rj = rj; rgbColor.gj = gj; rgbColor.bj = bj; return rgbColor; } RGB_IDATA CALLBACK _color_update(int _px, int _py, int _nColorMethod, double cx, double cy, double zx, double zy) { nColorMethod = _nColorMethod; px = _px; py = _py; __real__ c = cx; __imag__ c = cy; x = __real__ z = zx; y = __imag__ z = zy; limit = sqrt(__real__ z * __real__ z + __imag__ z * __imag__ z); dStrands_HI = limit + dStrands; dStrands_LO = limit - dStrands; dStrands_HI_cx = fabs(cx) + dStrands; dStrands_HI_cy = fabs(cy) + dStrands; dStrands_LO_cx = fabs(cx) - dStrands; dStrands_LO_cy = fabs(cy) - dStrands ; dStrands_cxd = dStrands_HI_cx - dStrands_LO_cx; dStrands_cyd = dStrands_HI_cy - dStrands_LO_cy; if (size_x <= 640 && size_y <= 480 && nUsingBuffers) { xsav = pXSave[px+py*size_x]; ysav = pYSave[px+py*size_x]; rj = rjData[px+py*size_x]; gj = gjData[px+py*size_x]; bj = bjData[px+py*size_x]; /* if (px == 30 && py == 120) { sprintf(cstr, "step 1, xsav = %g, ysav=%g, i = %d, rj = %g, gj = %g, px=%d, py=%d, rgData=%f", xsav, ysav, i, rj, gj, px, py, &rjData); MessageBox(NULL, cstr, "bug", MB_OK); //bug = 0; } */ } if (nColorMethod) color_methods(); //MessageBox(NULL, "step 5", "bug", MB_OK); //rgbColor.i = j; rgbColor.rj = rj; rgbColor.gj = gj; rgbColor.bj = bj; return rgbColor; } void CALLBACK _initialize(int nDistortion, int nFilter, int _nColorMethod, int dBailout, int NMAX, int _jul, int _jul_save, double _dStrands, double dBay100, double dBay1000, double dLower, double dUpper, double *_pXTemp, double *_pYTemp, double *_pXSave, double *_pYSave, double *_rjData, double *_gjData, double *_bjData, int _nRed, int _nGrn, int _nBlu, int _nRedStart, int _nGrnStart, int _nBluStart, int _nFDOption, int _bDimensionVariant, int _size_x, int _size_y, int _nUsingBuffers) { bug = 1; formula = nDistortion; filter = nFilter; bailout = dBailout; maxit = NMAX; minsize = 1e-20; maxsize = 1e+20; nColorMethod = _nColorMethod; nUsingBuffers = _nUsingBuffers; pXTemp = _pXTemp; pYTemp = _pYTemp; pXSave = _pXSave; pYSave = _pYSave; rjData = _rjData; gjData = _gjData; bjData = _bjData; jul = _jul; jul_save = _jul_save; size_x = _size_x; size_y = _size_y; nRed = _nRed; nGrn = _nGrn; nBlu = _nBlu; nRedStart = _nRedStart; nGrnStart = _nGrnStart; nBluStart = _nBluStart; dStrands = _dStrands; nFDOption = _nFDOption; bDimensionVariant = _bDimensionVariant; m_lower = dLower; // watermarks m_upper = dUpper; dFactor = dBay100; dFactor_2 = dBay1000; zmin = maxsize; zmax = minsize; //sprintf (cstr, "dFactor 1 = %f, dFactor 2 = %f", // dFactor, dFactor_2); //MessageBox(NULL, cstr, "Debug", MB_OK); } ////////////////////////////////////////////////////////// void color_methods() { /* if (xsav > 0 && ysav > 0 && bug == 1) { sprintf(cstr, "step 2, xsav = %g, ysav=%g, i = %d, rj = %g, gj = %g, px=%d, py=%d", xsav, ysav, i, rj, gj, px, py); MessageBox(NULL, cstr, "bug", MB_OK); bug = 0; } */ switch(nColorMethod) { case 0: break; case 1: Generalized_Coloring_Method1(); break; case 2: Generalized_Coloring_Method2(); break; case 3: Generalized_Coloring_Method3(); break; case 4: //wsprintf(cstr, "step 2, test method = %d", nColorMethod); //MessageBox(NULL, cstr, "bug", MB_OK); Generalized_Coloring_Method4(); //wsprintf(cstr, "step 3, test method = %d", nColorMethod); //MessageBox(NULL, cstr, "bug", MB_OK); break; case 5: Generalized_Coloring_Method5(); break; case 6: Generalized_Coloring_Method6(); break; case 7: Generalized_Coloring_Method7(); break; case 8: Generalized_Coloring_Method8(); break; case 9: Generalized_Coloring_Method9(); break; case 10: Generalized_Coloring_Method10(); break; case 11: Generalized_Coloring_Method11(); break; case 12: Generalized_Coloring_Method12(); break; case 13: Generalized_Coloring_Method13(); break; case 14: Generalized_Coloring_Method14(); break; case 15: Generalized_Coloring_Method15(); break; case 19: Generalized_Coloring_Method19(); break; case 20: Generalized_Coloring_Method20(); break; case 21: Generalized_Coloring_Method21(); break; case 22: Generalized_Coloring_Method22(); break; case 23: Generalized_Coloring_Method23(); break; case 24: Generalized_Coloring_Method24(); break; case 25: Generalized_Coloring_Method25(); break; case 26: Generalized_Coloring_Method26(); break; case 27: Generalized_Coloring_Method27(); break; case 28: Generalized_Coloring_Method28(); break; case 29: Generalized_Coloring_Method29(); break; case 30: Generalized_Coloring_Method30(); break; case 31: Generalized_Coloring_Method31(); break; case 32: Generalized_Coloring_Method32(); break; case 33: Generalized_Coloring_Method33(); break; case 34: Generalized_Coloring_Method34(); break; case 35: Generalized_Coloring_Method35(); break; case 36: Generalized_Coloring_Method36(); break; case 37: Generalized_Coloring_Method37(); break; case 38: Generalized_Coloring_Method38(); break; case 39: Generalized_Coloring_Method39(); break; default: break; } }