⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitconvertor.c

📁 mtk工具箱,计算器的详细设计,可以由此入手了解mtk的
💻 C
📖 第 1 页 / 共 5 页
字号:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/

/*****************************************************************************
 *
 * Filename:
 * ---------
 * Unitconvertor.c
 *
 * Project:
 * --------
 * MAUI
 *
 * Description:
 * ------------
 * This file implements Unit Convertor application.
 *
 * Author:
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *




 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/
/**********************************************************************************
 * Copyright Notice
 * ?2002 - 2003, Pixtel Communications, Inc., 1489 43rd Ave. W.,
 * Vancouver, B.C. V6M 4K8 Canada. All Rights Reserved.
 *  (It is illegal to remove this copyright notice from this software or any
 *  portion of it)
 */

/**********************************************************************************
   Filename:      Unitconvertor.c
   Author:        Vandana M
   Date Created:  June-14-2003
   Contains:      Unit Convertor
**********************************************************************************/
#ifndef _MMI_UNITCONVERTOR_C
#define _MMI_UNITCONVERTOR_C

/*  Include: MMI header file */
#include "MMI_features.h"
#if defined (__MMI_UNIT_CONVERTER__) || defined (__MMI_EXTENDED_UNIT_CONVERTER__)
#include "PixtelDataTypes.h"
#include "unitconvertor.h"
#if defined (__MMI_EXTENDED_CURRENCY_CONVERTER__)
#include "CurrencyConvertorE.h"
#elif defined (__MMI_CURRENCY_CONVERTER__)
#include "currencyconvertor.h"
#endif 
#include "Unicodexdcl.h"
#include "HistoryGprot.h"
#include "GlobalDefs.h"
#include "SettingProfile.h"
#include "DebugInitDef.h"
#include "CommonScreens.h"
#include "EventsGprot.h"
#include "wgui_inputs.h"
#include "wgui_categories.h"
#include "wgui_categories_inputs.h"
#include "OrganizerDef.h"
#if defined(__MMI_TOUCH_SCREEN__)
#include "EditorPenGprot.h"
#endif 
/*  Include: PS header file */

/* 
 * Define
 */

#define  UCONV_MAX_RESULT     12        /* 12 digits */
#define  UCONV_MAX_INPUT         8
#if defined (__MMI_UNIT_CONVERTER__)
#define  UCONV_NUM_UNITS         4

#define  KM2MILE              0.62137
#define  M2YARD               1.09361
#define  M2FOOT               3.28084
#define  CM2INCH              0.3937
#define  KG2POUND          2.20462
#define  KG2OUNCE          35.274
#elif defined (__MMI_EXTENDED_UNIT_CONVERTER__)
#define UCONV_NUM_UNITS2      11
#define UCONV_VOLUME_UNIT_NUM    11
#define UCONV_TEMPERATURE_UNIT_NUM  2
#define UCONV_VELOCITY_UNIT_NUM     4
#define UCONV_LENGTH_UNIT_NUM    8
#define UCONV_WEIGHT_UNIT_NUM    6
#define UCONV_SHOES_UNIT_NUM     3
#define UCONV_CLOTHES_UNIT_NUM      6
#define UCONV_SURFACE_UNIT_NUM      10
#endif 

#ifndef __MTK_TARGET__
#define UCONV_MAX_VALUE          999999999999l
#else 
#define UCONV_MAX_VALUE          999999999999ll
#endif 
#define UCONV_MIN_VALUE          0.0000000001

/* 
 * Typedef 
 */
typedef struct
{
    S32 CurrInlineSelectUnit;
    U8 CurrSelectedItem;
    U8 ClearResultFlag;
    U8 CurrHiliteUnitType;

#if defined (__MMI_UNIT_CONVERTER__)
    S8 *UnitList[UCONV_NUM_UNITS];
    UI_character_type MetricBuf[UCONV_MAX_RESULT + 2];
    UI_character_type EngBuf[UCONV_MAX_RESULT + 2];
#elif defined (__MMI_EXTENDED_UNIT_CONVERTER__)
    S32 CurrInlineSelectUnit1;
    S32 CurrInlineSelectUnit2;
    S8 *UnitListLg[UCONV_NUM_UNITS2];   /* inline selector items */
    UI_character_type InputBuf1[UCONV_MAX_RESULT + 2];
    UI_character_type InputBuf2[UCONV_MAX_RESULT + 2];
    S8 title[64];

    S8 *UnitListLg2[1]; /* inline selector items, only support two unit toggling (now only for Temperature application) */
    MMI_BOOL inputflag; /* flag to record the validation of input, only for shoes and clothes */
#endif 
} uconv_context_struct;

/* 
 * Global Variable
 */
uconv_context_struct *g_uconv_cntx = NULL;
extern wgui_inline_item wgui_inline_items[];

#ifdef __MMI_EXTENDED_UNIT_CONVERTER__
const DOUBLE g_volume_rate[UCONV_VOLUME_UNIT_NUM][UCONV_VOLUME_UNIT_NUM] =
    { {1, 0.001, 1000, 1, 1E-6, 0.06102, 2.2E-4, 0.00176, 0.0352, 0.0352, 6.29E-6},
{1000, 1, 1E+6, 1000, 0.001, 61.02376, 0.21996, 1.76, 35.195, 35.195, 0.00629},
{0.001, 1E-6, 1, 0.001, 1E-9, 6.102E-5, 2.2E-7, 1.76E-6, 3.52E-5, 3.52E-5, 6.29E-9},
{1, 0.001, 1000, 1, 1E-6, 0.06102, 2.2E-4, 0.00176, 0.0352, 0.0352, 6.29E-6},
{1E+6, 1000, 1E+9, 1E+6, 1, 6.1E+4, 219.969, 1759.754, 3.5195, 3.5195, 6.2898},
{16.387, 0.01639, 16387.1, 16.387, 1.639E-5, 1, 0.0036, 0.02884, 0.57674, 0.57674, 1.031E-4},
{4546.1, 4.5461, 4.546E+6, 4546.1, 0.00455, 277.42, 1, 8, 160, 160, 0.02859},
{568.26, 0.5683, 5.683E+5, 568.26, 5.683E-4, 34.677, 0.125, 1, 20, 20, 0.00357},
{28.413, 0.02841, 28413, 28.413, 2.841E-5, 1.7339, 0.00625, 0.05, 1, 1, 1.787E-4},
{28.413, 0.02841, 28413, 28.413, 2.841E-5, 1.7339, 0.00625, 0.05, 1, 1, 1.787E-4},
{1.59E+5, 158.99, 1.59E+8, 1.59E+5, 0.159, 9702, 34.972, 279.78, 5595.57, 5595.57, 1}
};
const DOUBLE g_velocity_rate[UCONV_VELOCITY_UNIT_NUM][UCONV_VELOCITY_UNIT_NUM] = { {1, 0.27778, 0.62137, 0.91134},
{3.6, 1, 2.237, 3.28083},
{1.60935, 0.44703, 1, 1.4667},
{1.09728, 0.30480, 0.68182, 1}
};
S8 g_unitlist2[32];
const DOUBLE g_length_rate[UCONV_LENGTH_UNIT_NUM][UCONV_LENGTH_UNIT_NUM] =
    { {1, 0.1, 0.001, 1E-6, 0.03937, 0.00328, 0.00109, 6.2137E-7},
{10, 1, 0.01, 1E-5, 0.3937, 0.0328, 0.0109, 6.2137E-6},
{1000, 100, 1, 0.001, 39.37, 3.28084, 1.09361, 0.00062},
{1E+6, 1E+5, 1E+3, 1, 39370, 3280.84, 1093.6, 0.62137},
{25.4, 2.54, 0.0254, 0.00003, 1, 0.08333, 0.02778, 0.00002},
{304.801, 30.4801, 0.3048, 0.00031, 12, 1, 0.33333, 0.00019},
{914.402, 91.4402, 0.9144, 0.00091, 36, 3, 1, 0.00057},
{1609350, 160935, 1609.35, 1.60935, 63360, 5280, 1760, 1}
};

const DOUBLE g_weight_rate[UCONV_WEIGHT_UNIT_NUM][UCONV_WEIGHT_UNIT_NUM] = { {1, 1E-3, 1E-6, 1E-9, 3.527E-5, 2.21E-6},
{1E+3, 1, 1E-3, 1E-6, 0.03527, 0.00221},
{1E+6, 1E+3, 1, 1E-3, 35.274, 2.20462},
{1E+9, 1E+6, 1E+3, 1, 35274, 2204.62},
{0.0283495, 28.3495, 0.02835, 0.00003, 1, 0.0625},
{0.453592, 453.592, 0.45359, 0.00045, 16, 1}
};

const DOUBLE g_shoes_rate_pluspara[UCONV_SHOES_UNIT_NUM][UCONV_SHOES_UNIT_NUM] = { {0, 30.5, 170},
{-30.5, 0, -135},
{17, 13.5, 0}
};

const DOUBLE g_shoes_rate_multipara[UCONV_SHOES_UNIT_NUM][UCONV_SHOES_UNIT_NUM] = { {1, 1, 10},
{1, 1, 10},
{0.1, 0.1, 1}
};

/* clothes unit converter formula : (x - subtractpara) / dividepara * multipara + pluspara */
const S32 g_clothes_rate_subtractpara[UCONV_CLOTHES_UNIT_NUM][UCONV_CLOTHES_UNIT_NUM] = { {0, 34, 34, 0, 0, 0},
{44, 0, 44, 44, 44, 44},
{85, 85, 0, 85, 85, 85},
{0, -1, -1, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 2, 2, 0, 0, 0}
};

const S32 g_clothes_rate_dividepara[UCONV_CLOTHES_UNIT_NUM][UCONV_CLOTHES_UNIT_NUM] = { {1, 4, 4, 1, 1, 1},
{11, 1, 11, 11, 11, 11},
{5, 5, 1, 5, 5, 5},
{1, 4, 4, 1, 1, 1},
{1, 4, 4, 1, 1, 1},
{1, 4, 4, 1, 1, 1}
};

const S32 g_clothes_rate_multipara[UCONV_CLOTHES_UNIT_NUM][UCONV_CLOTHES_UNIT_NUM] = { {1, 11, 5, 1, 1, 1},
{4, 1, 5, 4, 4, 4},
{4, 11, 1, 4, 4, 4},
{1, 11, 5, 1, 1, 1},
{1, 11, 5, 1, 1, 1},
{1, 11, 5, 1, 1, 1}
};

const S32 g_clothes_rate_pluspara[UCONV_CLOTHES_UNIT_NUM][UCONV_CLOTHES_UNIT_NUM] = { {0, 44, 85, -35, -34, -32},
{36, 0, 85, 1, 2, 4},
{36, 44, 0, 1, 2, 4},
{35, 44, 85, 0, 1, 3},
{34, 44, 85, -1, 0, 2},
{32, 44, 85, -3, -2, 0}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -