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