const char* ExifGetString(ExifFields_e field) { if (!HasExif()) { fprintf(stderr, "No info!\n"); return 0; } switch (field) { case ExifCameraMake: return ImageInfo.CameraMake; case ExifCameraModel: return ImageInfo.CameraModel; case ExifDate: return ImageInfo.DateTime; case ExifOrientation: return OrientTab[ImageInfo.Orientation]; case ExifColor: return ItoS(ImageInfo.IsColor); case ExifFlash: return ItoS(ImageInfo.FlashUsed); case ExifFocalLength: return FtoS(ImageInfo.FocalLength); case ExifExposureTime: return FtoS(ImageInfo.ExposureTime); case ExifAperture: return FtoS(ImageInfo.ApertureFNumber); case ExifDistance: return FtoS(ImageInfo.Distance); case ExifCCDWidth: return FtoS(ImageInfo.CCDWidth); case ExifExposureBias: return FtoS(ImageInfo.ExposureBias); case ExifWhiteBalance: return ItoS(ImageInfo.Whitebalance); case ExifMetering: return ItoS(ImageInfo.MeteringMode); case ExifExposureProgram: return ItoS(ImageInfo.ExposureProgram); case ExifISO: return ItoS(ImageInfo.ISOequivalent); case ExifCompression: return ItoS(ImageInfo.CompressionLevel); case ExifComments: return ImageInfo.Comments; case ExifThumbnailSize: return ItoS(ImageInfo.ThumbnailSize); } return 0; }
void View::renderOverlay() { // Iterate over all colonies, get the strainID/size and plot std::vector<Colony*> allColonies = *(model->getAllColonies()); int lineHeight = 18; int lineCount = 0; map<string, int>* strainMap = model->getAllStrains(); map<string, int>::const_iterator strainIter; string colonyStrainName; for (strainIter = strainMap->begin(); strainIter != strainMap->end(); strainIter++) { int cellCount = 0; for (unsigned int colonyNo = 0; colonyNo < allColonies.size(); colonyNo++) { colonyStrainName = model->getStrain(*allColonies[colonyNo]); if (colonyStrainName == strainIter->first) { cellCount += allColonies[colonyNo]->getSize(); } } renderText(border + 20, (border + 20 + (lineCount * lineHeight)), strainIter->first + " : " + ItoS(cellCount), overlaySurface, 255, 255, 255, false); lineCount++; } renderText(border + 20, (border + 20 + (lineCount * lineHeight)), "Nutr. : " + FtoS(model->getAgar()->getNutrientLevel(), 2), overlaySurface, 255, 255, 255, false); lineCount++; renderText(border + 20, (border + 20 + (lineCount * lineHeight)), "Gens. : " + ItoS(model->getIterations()) + " " + iterationsToFormattedTime(), overlaySurface, 255, 255, 255, false); lineCount++; // Render outer box int height = lineCount * lineHeight; int width = 220; drawLine(border + 18, border + 18, width + 18, border + 18, overlaySurface, Colours::white); drawLine(width + 18, border + 18, width + 18, border + 18 + height, overlaySurface, Colours::white); drawLine(width + 18, border + 18 + height, border + 18, border + 18 + height, overlaySurface, Colours::white); drawLine(border + 18, border + 18 + height, border + 18, border + 18, overlaySurface, Colours::white); }