/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// // OdExMvdXmlHostAppServices.cpp: implementation of the OdExMvdXmlHostAppServices class. // ////////////////////////////////////////////////////////////////////// #include "OdaCommon.h" #include "ExMvdXmlHostAppServices.h" //---------------------------------------------------------- // // Support function // //---------------------------------------------------------- void odMvdXmlPrintConsoleString(const wchar_t* fmt, ...) { va_list argList; va_start(argList, fmt); OdString s; s.formatV(fmt, argList); va_end(argList); #if (defined(_WIN32) || defined(_WIN64)) && !defined(_WIN32_WCE) DWORD dw; HANDLE o = ::GetStdHandle(STD_OUTPUT_HANDLE); if (::GetFileType(o) == FILE_TYPE_CHAR) WriteConsoleW(o, s.c_str(), s.getLength(), &dw, 0); else WriteFile(o, (const char*)s, s.getLengthA(), &dw, 0); #else printf("%ls", s.c_str()); #endif } OdExMvdXmlHostAppProgressMeter::OdExMvdXmlHostAppProgressMeter() : m_MeterLimit(0) , m_MeterCurrent(0) , m_MeterOld(0) , m_disableOutput(false) { } void OdExMvdXmlHostAppProgressMeter::start(const OdString& displayString /*= OdString::kEmpty*/) { if (!m_disableOutput) { #ifndef _WIN32_WCE odMvdXmlPrintConsoleString(OD_T("%ls------- Started %ls\n"), m_Prefix.c_str(), displayString.c_str()); #endif } } void OdExMvdXmlHostAppProgressMeter::stop() { if (!m_disableOutput) { #ifndef _WIN32_WCE odMvdXmlPrintConsoleString(OD_T("%ls------- Stopped\n"), m_Prefix.c_str()); #endif } } void OdExMvdXmlHostAppProgressMeter::meterProgress() { m_MeterCurrent++; if (!m_disableOutput) { double f1, f2; f1 = (double)m_MeterCurrent / m_MeterLimit * 100; f2 = (double)m_MeterOld / m_MeterLimit * 100; if ((f1 - f2) > 0.7) { #ifndef _WIN32_WCE odMvdXmlPrintConsoleString(OD_T("%lsProgress: %2.2lf%%\n"), m_Prefix.c_str(), f1); #endif m_MeterOld = m_MeterCurrent; } } } void OdExMvdXmlHostAppProgressMeter::setLimit(int max) { m_MeterLimit = max; m_MeterCurrent = 0; m_MeterOld = 0; if (!m_disableOutput) { #ifndef _WIN32_WCE odMvdXmlPrintConsoleString(OD_T("%lsMeter Limit: %d\n"), m_Prefix.c_str(), max); #endif } } OdExMvdXmlHostAppServices::OdExMvdXmlHostAppServices() { } OdDbHostAppProgressMeter* OdExMvdXmlHostAppServices::newProgressMeter() { return &m_progressMeter; } void OdExMvdXmlHostAppServices::releaseProgressMeter(OdDbHostAppProgressMeter* pProgressMeter) { }