146debc2cSopenharmony_ci/* 246debc2cSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 346debc2cSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 446debc2cSopenharmony_ci * you may not use this file except in compliance with the License. 546debc2cSopenharmony_ci * You may obtain a copy of the License at 646debc2cSopenharmony_ci * 746debc2cSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 846debc2cSopenharmony_ci * 946debc2cSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1046debc2cSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1146debc2cSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1246debc2cSopenharmony_ci * See the License for the specific language governing permissions and 1346debc2cSopenharmony_ci * limitations under the License. 1446debc2cSopenharmony_ci */ 1546debc2cSopenharmony_ci 1646debc2cSopenharmony_ci#include "print_converter.h" 1746debc2cSopenharmony_ci#include "print_constant.h" 1846debc2cSopenharmony_ci#include "print_log.h" 1946debc2cSopenharmony_ci#include "print_util.h" 2046debc2cSopenharmony_ci 2146debc2cSopenharmony_cinamespace { 2246debc2cSopenharmony_ciconst uint32_t ORIENTATION_OFFSET = 3; 2346debc2cSopenharmony_ci} // namespace 2446debc2cSopenharmony_cinamespace OHOS::Print { 2546debc2cSopenharmony_ciPrint_ErrorCode ConvertToNativeErrorCode(int32_t errorCode) 2646debc2cSopenharmony_ci{ 2746debc2cSopenharmony_ci if (errorCode >= E_PRINT_GENERIC_FAILURE && errorCode <= E_PRINT_UNKNOWN) { 2846debc2cSopenharmony_ci return static_cast<Print_ErrorCode>(errorCode + PRINT_ERROR_GENERIC_FAILURE - E_PRINT_GENERIC_FAILURE); 2946debc2cSopenharmony_ci } 3046debc2cSopenharmony_ci return static_cast<Print_ErrorCode>(errorCode); 3146debc2cSopenharmony_ci} 3246debc2cSopenharmony_ci 3346debc2cSopenharmony_ciPrint_PrinterState ConvertPrinterState(uint32_t state) 3446debc2cSopenharmony_ci{ 3546debc2cSopenharmony_ci switch (state) { 3646debc2cSopenharmony_ci case PRINTER_ADDED: 3746debc2cSopenharmony_ci return PRINTER_UNAVAILABLE; 3846debc2cSopenharmony_ci case PRINTER_REMOVED: 3946debc2cSopenharmony_ci return PRINTER_UNAVAILABLE; 4046debc2cSopenharmony_ci case PRINTER_UPDATE_CAP: 4146debc2cSopenharmony_ci return PRINTER_UNAVAILABLE; 4246debc2cSopenharmony_ci case PRINTER_CONNECTED: 4346debc2cSopenharmony_ci return PRINTER_IDLE; 4446debc2cSopenharmony_ci case PRINTER_DISCONNECTED: 4546debc2cSopenharmony_ci return PRINTER_UNAVAILABLE; 4646debc2cSopenharmony_ci case PRINTER_RUNNING: 4746debc2cSopenharmony_ci return PRINTER_BUSY; 4846debc2cSopenharmony_ci default: 4946debc2cSopenharmony_ci return PRINTER_UNAVAILABLE; 5046debc2cSopenharmony_ci } 5146debc2cSopenharmony_ci} 5246debc2cSopenharmony_ci 5346debc2cSopenharmony_cibool ConvertStringToInt(const char *src, int &dst) 5446debc2cSopenharmony_ci{ 5546debc2cSopenharmony_ci if (src == nullptr) { 5646debc2cSopenharmony_ci return false; 5746debc2cSopenharmony_ci } 5846debc2cSopenharmony_ci dst = atoi(src); 5946debc2cSopenharmony_ci if (errno == ERANGE) { 6046debc2cSopenharmony_ci PRINT_HILOGW("ConvertStringToInt fail: %{public}s", src); 6146debc2cSopenharmony_ci return false; 6246debc2cSopenharmony_ci } 6346debc2cSopenharmony_ci return true; 6446debc2cSopenharmony_ci} 6546debc2cSopenharmony_ci 6646debc2cSopenharmony_cibool ConvertOrientationMode(const uint32_t &src, Print_OrientationMode &dst) 6746debc2cSopenharmony_ci{ 6846debc2cSopenharmony_ci if (src >= ORIENTATION_OFFSET && src - ORIENTATION_OFFSET <= static_cast<uint32_t>(ORIENTATION_MODE_NONE)) { 6946debc2cSopenharmony_ci dst = static_cast<Print_OrientationMode>(src - ORIENTATION_OFFSET); 7046debc2cSopenharmony_ci return true; 7146debc2cSopenharmony_ci } else { 7246debc2cSopenharmony_ci return false; 7346debc2cSopenharmony_ci } 7446debc2cSopenharmony_ci} 7546debc2cSopenharmony_ci 7646debc2cSopenharmony_cibool ConvertColorMode(const uint32_t &src, Print_ColorMode &dst) 7746debc2cSopenharmony_ci{ 7846debc2cSopenharmony_ci if (src >= 0 && src <= static_cast<uint32_t>(COLOR_MODE_AUTO)) { 7946debc2cSopenharmony_ci dst = static_cast<Print_ColorMode>(src); 8046debc2cSopenharmony_ci return true; 8146debc2cSopenharmony_ci } else { 8246debc2cSopenharmony_ci return false; 8346debc2cSopenharmony_ci } 8446debc2cSopenharmony_ci} 8546debc2cSopenharmony_ci 8646debc2cSopenharmony_cibool ConvertDuplexMode(const uint32_t &src, Print_DuplexMode &dst) 8746debc2cSopenharmony_ci{ 8846debc2cSopenharmony_ci if (src >= 0 && src <= static_cast<uint32_t>(DUPLEX_MODE_SHORT_EDGE)) { 8946debc2cSopenharmony_ci dst = static_cast<Print_DuplexMode>(src); 9046debc2cSopenharmony_ci return true; 9146debc2cSopenharmony_ci } else { 9246debc2cSopenharmony_ci return false; 9346debc2cSopenharmony_ci } 9446debc2cSopenharmony_ci} 9546debc2cSopenharmony_ci 9646debc2cSopenharmony_cibool ConvertQuality(const uint32_t &src, Print_Quality &dst) 9746debc2cSopenharmony_ci{ 9846debc2cSopenharmony_ci if (src >= static_cast<uint32_t>(PRINT_QUALITY_DRAFT) && src <= static_cast<uint32_t>(PRINT_QUALITY_HIGH)) { 9946debc2cSopenharmony_ci dst = static_cast<Print_Quality>(src); 10046debc2cSopenharmony_ci return true; 10146debc2cSopenharmony_ci } else { 10246debc2cSopenharmony_ci return false; 10346debc2cSopenharmony_ci } 10446debc2cSopenharmony_ci} 10546debc2cSopenharmony_ci 10646debc2cSopenharmony_cistd::string GetDocumentFormatString(Print_DocumentFormat format) 10746debc2cSopenharmony_ci{ 10846debc2cSopenharmony_ci switch (format) { 10946debc2cSopenharmony_ci case DOCUMENT_FORMAT_JPEG: 11046debc2cSopenharmony_ci return "image/jpeg"; 11146debc2cSopenharmony_ci case DOCUMENT_FORMAT_PDF: 11246debc2cSopenharmony_ci return "application/pdf"; 11346debc2cSopenharmony_ci case DOCUMENT_FORMAT_POSTSCRIPT: 11446debc2cSopenharmony_ci return "application/postscript"; 11546debc2cSopenharmony_ci case DOCUMENT_FORMAT_TEXT: 11646debc2cSopenharmony_ci return "text/plain"; 11746debc2cSopenharmony_ci case DOCUMENT_FORMAT_AUTO: 11846debc2cSopenharmony_ci return "application/octet-stream"; 11946debc2cSopenharmony_ci default: 12046debc2cSopenharmony_ci return "application/octet-stream"; 12146debc2cSopenharmony_ci } 12246debc2cSopenharmony_ci} 12346debc2cSopenharmony_ci 12446debc2cSopenharmony_cistd::string GetResolutionString(Print_Resolution resolution) 12546debc2cSopenharmony_ci{ 12646debc2cSopenharmony_ci return std::to_string(resolution.horizontalDpi) + "x" + std::to_string(resolution.verticalDpi) + "dpi"; 12746debc2cSopenharmony_ci} 12846debc2cSopenharmony_ci} // namespace OHOS::Print 129