コード例 #1
0
McoStatus Techkon::GetPaperDensity(void)
{
long tick = TickCount();

while (TickCount() - tick < 240)
	{
	if ((!IsBufferEmpty()) && (IsDataPresent())) return getNextPatch(paperDensity);
	}
return MCO_FAILURE;
}
コード例 #2
0
ファイル: Columns.cpp プロジェクト: mikekov/ExifPro
bool Columns::Less(int column, const PhotoInfo& info1, const PhotoInfo& info2) const
{
	// p1 < p2

	bool present1= IsDataPresent(column, info1);
	bool present2= IsDataPresent(column, info2);

	if (!present1 && !present2)
		return false;
	if (present1 && !present2)
		return true;	// present entries first (before empty ones)
	if (present2 && !present1)
		return false;

	switch (column)
	{
	case COL_PHOTO_NAME:	// file name
		//return info1.GetName() < info2.GetName();
		return NameIsLess/*StringILess*/(info1.GetName().c_str(), info2.GetName().c_str());

	case COL_DATE_TIME:		// date & time
		return info1.GetDateTime() < info2.GetDateTime();
//		return info1.GetPhotoExactTime() < info2.GetPhotoExactTime();
		//info1.tm_date_ < info2.tm_date_; //info1.date_time_ < info2.date_time_;

	case COL_EXP_TIME:		// exposure time
		return info1.ExposureTimeValue() < info2.ExposureTimeValue();

	case COL_FNUMBER:		// f-number
		return info1.FNumberValue() < info2.FNumberValue();

	case COL_EXP_PROG:		// exp. program
		return info1.GetExposureProgram() < info2.GetExposureProgram();

	case COL_EXP_BIAS:		// exp. bias
//TEST		return info1.index_.Feature() < info2.index_.Feature();
		return info1.GetExposureBias() > info2.GetExposureBias();

	case COL_MET_MODE:		// metering mode
		return info1.GetMeteringMode() < info2.GetMeteringMode();

	case COL_LIGHT_SRC:		// light source
		return info1.GetLightSource() < info2.GetLightSource();

	case COL_FLASH:			// flash
		return info1.GetFlash() < info2.GetFlash();

	case COL_FOCAL_LENGTH:		// focal length
		return info1.GetFocalLength() < info2.GetFocalLength();

	case COL_FOCAL_LENGTH_35MM:
		return info1.GetFocalLength35mm() < info2.GetFocalLength35mm();

	case COL_ISO:			// ISO speed
		return info1.GetISOSpeed() < info2.GetISOSpeed();

	case COL_ORIENTATION:	// orientation
		return info1.OrientationField() < info2.OrientationField();

	case COL_DIMENSIONS:	// dimensions
		return info1.GetWidth() * info1.GetHeight() < info2.GetWidth() * info2.GetHeight();

	case COL_FILE_SIZE:		// file size
		return info1.GetFileSize() < info2.GetFileSize();

	case COL_PATH:			// path
		return info1.GetOriginalPath() < info2.GetOriginalPath();

	case COL_MAKE:			// make
		{
			int cmp= info1.GetMake().compare(info2.GetMake());
			if (cmp != 0)
				return cmp < 0;
			return info1.GetModel() < info2.GetModel();
		}
	case COL_MODEL:			// model
		return info1.GetModel() < info2.GetModel();

	case COL_DESCRIPTION:
		return info1.photo_desc_ < info2.photo_desc_;
	case COL_FILE_TYPE_NAME:
		return info1.GetFileTypeName() < info2.GetFileTypeName();
	case COL_FILE_NAME:
		return info1.GetNameAndExt() < info2.GetNameAndExt();
//	case COL_COMPR_BPP:
//		return info1.compressed_bpp_ < info2.compressed_bpp_;
	case COL_SUBJECT_DIST:
		return info1.GetSubjectDistance() < info2.GetSubjectDistance();

	case COL_RATE:
		return info1.GetRating() < info2.GetRating();
#ifdef _TRUE_EXPOSURE_COL_
	case COL_TRUE_EXPOSURE:
		return GetTrueIntensity(info1) < GetTrueIntensity(info2);
#endif

	// GPS ===================

	case COL_GPS_LATITUDE:
		return info1.GetGpsData()->LessLatitude(*info2.GetGpsData());
		break;
	case COL_GPS_LONGITUDE:
		return info1.GetGpsData()->LessLongitude(*info2.GetGpsData());
		break;
	case COL_GPS_ALTITUDE:
		return info1.GetGpsData()->LessAltitude(*info2.GetGpsData());
		break;
	case COL_GPS_TIME_STAMP:
		return info1.GetGpsData()->LessTimeStamp(*info2.GetGpsData());
		break;

	default:
		if (column >= COL_METADATA_SET_START && column <= COL_METADATA_SET_END)
		{
			ASSERT(info1.HasMetadata());	// IsDataPresent should
			ASSERT(info2.HasMetadata());	// filter out img w/o metadata

			const String& s1= ::GetXmpDataField(*info1.GetMetadata(), column - COL_METADATA_SET_START);
			const String& s2= ::GetXmpDataField(*info2.GetMetadata(), column - COL_METADATA_SET_START);
			return s1 < s2;
		}
		else if (column >= COL_CUSTOM_SET_START && column <= COL_CUSTOM_SET_END)
			return custom_.Less(column - COL_CUSTOM_SET_START, info1, info2);
		else
			return info1.GetMakerNote()->Less(column, *info2.GetMakerNote());
	}
}
コード例 #3
0
ファイル: Columns.cpp プロジェクト: mikekov/ExifPro
void Columns::GetInfo(String& out, int index, const PhotoInfo& inf) const
{
	ASSERT(index >= 0 && index < PredefCount() || index >= COL_CUSTOM_SET_START && index <= COL_CUSTOM_SET_END ||
		index >= COL_METADATA_SET_START && index <= COL_METADATA_SET_END);

	if (!IsDataPresent(index, inf))
	{
		out = _T("-");
		return;
	}

	switch (index)
	{
	case COL_PHOTO_NAME:
		out = inf.GetName();
		break;
	case COL_DATE_TIME:
		out = inf.DateTimeStr();
		break;
	case COL_EXP_TIME:
		out = inf.ExposureTime();
		break;
	case COL_FNUMBER:
		out = inf.FNumber();
		break;
	case COL_EXP_PROG:
		out = inf.ExposureProgram();
		break;
	case COL_EXP_BIAS:
		out = inf.ExposureBias();
//TEST		out = inf.index_.AsString();
		break;
	case COL_MET_MODE:
		out = inf.MeteringMode();
		break;
	case COL_LIGHT_SRC:
		out = inf.LightSource();
		break;
	case COL_FLASH:
		out = inf.Flash();
		break;
	case COL_FOCAL_LENGTH:
		out = inf.FocalLength();
		break;
	case COL_FOCAL_LENGTH_35MM:
		out = inf.FocalLength35mm();
		break;
	case COL_ISO:
		out = inf.ISOSpeed();
		break;
	case COL_ORIENTATION:
		out = inf.Orientation();
		break;
	case COL_DIMENSIONS:
		out = inf.Size();
		break;
	case COL_FILE_SIZE:
		out = inf.FileSize();
		break;
	case COL_PATH:
		out = inf.GetOriginalPath();
		break;
	case COL_MAKE:
		out = inf.GetMake();
		break;
	case COL_MODEL:
		out = inf.GetModel();
		break;

	case COL_DESCRIPTION:
		inf.Description(out);
		break;
	case COL_FILE_TYPE_NAME:
		out = inf.GetFileTypeName();
		break;
	case COL_FILE_NAME:
		out = inf.GetNameAndExt();
		break;
//	case COL_COMPR_BPP:
		// TODO
//	{ "Compressed Bits Per Pixel",		"Compressed BPP",		LVCFMT_RIGHT,	 40 },
//		break;
	case COL_SUBJECT_DIST:
		{
			extern String SubjectDistance(Rational dist);
			out = SubjectDistance(inf.GetSubjectDistance());
		}
//	{ "Subject Distance",				"Subject Distance",		LVCFMT_RIGHT,	 60 },
		break;

	case COL_RATE:
		{
			int stars= inf.GetRating();
			if (stars != 0)
			{
				TCHAR buf[64];
				out = _itot(stars, buf, 10);
			}
			else
				out = _T("-");
		}
		break;

#ifdef _TRUE_EXPOSURE_COL_
	case COL_TRUE_EXPOSURE:
		{
			double ti= GetTrueIntensity(inf);
			if (ti > 0.0)
			{
				oStringstream ost;
				//ost.precision(3);
				ost << ti;
				out = ost.str();
			}
			else
				out = _T("-");
		}
		break;
#endif

	case COL_GPS_LATITUDE:
		out = inf.GetGpsData()->GetLatitude();
		break;
	case COL_GPS_LONGITUDE:
		out = inf.GetGpsData()->GetLongitude();
		break;
	case COL_GPS_ALTITUDE:
		out = inf.GetGpsData()->GetAltitude();
		break;
	case COL_GPS_TIME_STAMP:
		out = inf.GetGpsData()->GPSTimeStamp();
		break;

	default:
		if (index >= COL_METADATA_SET_START && index <= COL_METADATA_SET_END)
		{
			ASSERT(inf.HasMetadata());	// IsDataPresent should filter out img w/o metadata

			out = ::GetXmpDataField(*inf.GetMetadata(), index - COL_METADATA_SET_START);
			// no multiple lines
			boost::algorithm::replace_all(out, _T("\xd\xa"), _T("  "));

			break;
		}
		else if (index >= COL_CUSTOM_SET_START && index <= COL_CUSTOM_SET_END)
		{
			double num= 0.0;
			switch (custom_.CalcValue(index - COL_CUSTOM_SET_START, inf, num, out))
			{
			case CustomColumns::Text:
				// no op; out already contains the result
				break;

			case CustomColumns::Number:
				{
					TCHAR buf[128];
					_stprintf_s(buf, array_count(buf), _T("%.14g"), num);
					out = buf;
				}
				break;

			default:
				out = _T("<error>");
				break;
			}
		}
		else
			inf.GetMakerNote()->GetInfo(index, out);
		break;
	}
}