[English Version]

MFP语言和可编程科学计算器

MFP语言简介

MFP函数

所有函数

整数操作函数

逻辑函数

统计和随机函数

三角函数

指数函数

复数函数

系统函数

数组和矩阵函数

绘图函数

表达式和微积分函数

字符串函数

双曲三角函数

排序函数

多项式函数

信号处理函数

文件操作函数

时间和日期函数

显示函数

多媒体函数

数据结构函数

数据交换文件格式函数

平台和硬件函数

并行计算函数

RTC多媒体函数

反射函数

MFP编译函数

其它函数

部署用户自定义函数

在您的应用中调用MFP

创建安卓安装包

小游戏的开发

绘制图形

使用MFP进行数学分析

使用MFP处理文件

数,字符串和数组

日期时间和系统相关

可编程科学计算器介绍

可编程科学计算器帮助:所有函数

函数名 函数帮助信息
abs

::mfp::math::complex::abs(1) :

abs(x)返回复数x的模或者实数x的绝对值。

accept

::mfp::paracomp::connect::accept(1) :

accept函数接收一个从远端到一个本地网络界面的连接请求然后返回接收端(也就是位于本地网络界面的)连接对象。它只有一个参数,也就是本地网络界面对象信息。网络界面对象信息通常是函数generate_interface的返回值。注意如果没有连接请求到来,该函数调用会阻塞当前线程。该函数的一个例子是accept(local_info)。

acos

::mfp::math::trigon::acos(1) :

acos(x)返回x的反余弦值,注意x可以为复数。

acosd

::mfp::math::trigon::acosd(1) :

acosd(x)返回基于角度的x的反余弦值。

acosh

::mfp::math::trigon::acosh(1) :

函数acosh(x)为双曲余弦函数的反函数。

add_peer_stream

::mfp::multimedia::webrtc_lib::add_peer_stream(1) :

add_peer_stream函数将多媒体流(也就是视频和音频)链入web RTC的peer connection对象。注意此处的web RTC是指的用于支持声音和视频通信的web RTC函数库,而不是用于支持数据通信的WEBRTC协议栈。它只有一个参数,就是peer connection对象的Id,也就是peer connection对象连接的远端的地址。

add_rtc_media_ice_candidate

::mfp::multimedia::webrtc_lib::add_rtc_media_ice_candidate(2) :

add_rtc_media_ice_candidate函数将一个ICE协议候选对象加入到peer connection对象的ICE候选对象列表中。它有两个参数,第一个参数是peer connection对象的Id。第二个参数是基于字符串的ICE候选对象的内容。

add_rtc_video_output

::mfp::multimedia::webrtc_lib::add_rtc_video_output(5) :

add_rtc_video_output将一个RTC视频子窗口加到显示窗口上。它有五个参数,第一个参数是显示窗口的句柄,该句柄是open_screen_display函数的返回值。剩下的四个参数分别是基于整数的视频子窗口的左上顶点的横坐标,纵坐标,宽度和高度。这四个参数决定了视频子窗口在显示窗口上的位置。

adj

::mfp::math::matrix::adj(1) :

函数cofactor(x)返回2维方阵x的伴随矩阵。

alloc_array

::mfp::array::alloc_array(1...) :

alloc_array(x...)返回一个新分配的矩阵,其大小由参数决定。所有的参数都必须为正整数。

::mfp::array::alloc_array(2) :

alloc_array(x, y)返回一个新分配的矩阵,其大小由正整数数列参数x决定。参数y是矩阵中所有元素的初始值,注意y参数可省略,如果省略,所有元素被初始化为0。

and

::mfp::math::logic::and(1...) :

and(x...)接受不少于1个的任意个数的参数,返回这些参数的逻辑与值。如果某一个参数不是布尔类型,将会被自动转换为布尔类型。

angle

::mfp::math::complex::angle(1) :

angle(x)返回复数x基于弧度的幅角值。

append_elem_to_ablist

::mfp::data_struct::array_based::append_elem_to_ablist(2) :

append_elem_to_ablist(array_based_list, ref_of_elem)将ref_of_elem的引用添加到基于数组的序列array_based_list的尾部。它返回更新过的array_based_list。作为参数的array_based_list和返回值共享元素。

asin

::mfp::math::trigon::asin(1) :

asin(x)返回x的反正弦值,注意x可以为复数。

asind

::mfp::math::trigon::asind(1) :

asind(x)返回基于角度的x的反正弦值。

asinh

::mfp::math::trigon::asinh(1) :

函数asinh(x)为双曲正弦函数的反函数。

atan

::mfp::math::trigon::atan(1) :

atan(x)返回x的反正切值,注意x可以为复数。

atand

::mfp::math::trigon::atand(1) :

atand(x)返回基于角度的x的反正切值。

atanh

::mfp::math::trigon::atanh(1) :

函数atanh(x)为双曲正切函数的反函数。

avg

::mfp::math::stat_stoch::avg(0...) :

函数avg(…)返回任意个数参数的平均值。

beta

::mfp::math::stat_stoch::beta(2) :

函数beta(z1, z2)返回复数z1和z2的beta函数值。注意z1和z2的实部必须是正数。

calculate_text_boundary

::mfp::graph_lib::draw::calculate_text_boundary(4) :

calculate_text_boundary(display, string, text_origin, text_style)返回一个 文本块的边界长方形。边界长方形是一个4元素数组,第一个元素是左边界,第二个元素是上边界,第三个元素是宽度,第四个元素是高度。Calculate_text_boundary的第一个参数是display,它既可以是screen display,也可以是image display。第二个参数是文本块的文本,可以不止一行。第三个参数是文本块起始点的位置。这是一个两元素数组,第一个元素是起始点横坐标,第二个元素是起始点纵坐标。最后一个参数是可省略参数,用于定义文本的字体和大小。如果它被省略,则字体为系统缺省字体,大小为16。如果它不被省略,那么它必须是一个包含一个或者两个元素的数组。如果是一个元素的数组,那么该元素必须是一个正整数,代表字体的大小,而字体则为系统缺省字体。如果是包含两个元素的数组,那么第一个元素为字体的大小,第二个元素是基于字符串的字体的名字。一个本函数的例子为:calculate_text_boundary(display, txtStr, [108, 190], [27, "SimSun"])。

calculate_text_origin

::mfp::graph_lib::draw::calculate_text_origin(8) :

calculate_text_origin(display, string, boundary_rect_left_top, width, height, horAlign, verAlign, text_style)返回指定边界长方形和对齐方式的文本块的起始点。起始点是一个两元素([x,y])数组,将会被draw_text作为参数使用。Calculate_text_origin的第一个参数是display,它既可以是screen display,也可以是image display。第二个参数是文本块的文本,可以不止一行。第三个参数是边界长方形的左上角位置。这是一个两元素数组,第一个元素是左边界坐标,第二个元素是上边界坐标。第四个和第五个参数是边界长方形的宽度和高度。第六个参数是文本块的横向对齐方式。-1表示左对齐,0表示中对齐,1表示右对齐。第七个参数是文本块的纵向对齐方式。-1表示上对齐,0表示中对齐,1表示下对齐。最后一个参数是可省略参数,用于定义文本的字体和大小。如果它被省略,则字体为系统缺省字体,大小为16。如果它不被省略,那么它必须是一个包含一个或者两个元素的数组。如果是一个元素的数组,那么该元素必须是一个正整数,代表字体的大小,而字体则为系统缺省字体。如果是包含两个元素的数组,那么第一个元素为字体的大小,第二个元素是基于字符串的字体的名字。一个本函数的例子为:calculate_text_origin(display, "pei is " + peichoices[idx], [256, 72], peiBndrySize[0], peiBndrySize[1], horAlign, verAlign, [22])。

cd

::mfp::io::file::cd(1) :

change_dir(path)(别名cd(path))将当前路径变为字符串路径path。如果成功,返回true,否则返回false。例子包括change_dir("D:\\Windows") (Windows)和cd("/") (Android)。

ceil

::mfp::math::number::ceil(1) :

ceil(x), x是浮点数,返回不小于x的最小整数。

::mfp::math::number::ceil(2) :

ceil(x,y),x是浮点数,y是非负整数,返回不小于x的小数点后面保留y位有效数字的最小数值。

change_dir

::mfp::io::file::change_dir(1) :

change_dir(path)(别名cd(path))将当前路径变为字符串路径path。如果成功,返回true,否则返回false。例子包括change_dir("D:\\Windows") (Windows)和cd("/") (Android)。

clear_oval

::mfp::graph_lib::draw::clear_oval(5) :

clear_oval(owner_info, display, left_top, width, height)为绘图事件调度器添加一个清除椭圆形的事件。在绘图事件调度器调用这个绘制事件时,该事件将在display上清除一个椭圆形。Clear_oval有5个参数。第一个参数是owner_info。Owner_info告诉绘图事件调度器谁拥有这个绘图事件。Owner_info可以是一个字符串,代表拥有者的名字,也可以是一个整数,代表拥有者的id,还可以是NULL,代表系统拥有该事件,更可以是一个包含两个元素的数组,其中第一个元素是一个代表拥有者名字的字符串,或者代表拥有者id的整数,或者代表系统的NULL,第二个元素是一个代表时标的浮点数,但要注意这里的时标不是真正的时标,该浮点数可以是任意值。该浮点数的值在清除本绘图事件时会发挥作用。第二个参数是display,它既可以是screen display,也可以是image display。第三个参数是包含两个元素的数组([x,y]),表示该椭圆的包络长方形左上顶点的位置。第四个和第五个参数为该椭圆的包络长方形的长度和高度。Clear_oval的例子包括:clear_oval(["my draw", 0.381], d, [128, 45], 18, 30)以及clear_oval(NULL, d, [23, 111], 70, 19)。

clear_rect

::mfp::graph_lib::draw::clear_rect(5) :

clear_rect(owner_info, display, left_top, width, height)为绘图事件调度器添加一个清除长方形的事件。在绘图事件调度器调用这个绘制事件时,该事件将在display上清除一个长方形。Clear_rect有5个参数。第一个参数是owner_info。Owner_info告诉绘图事件调度器谁拥有这个绘图事件。Owner_info可以是一个字符串,代表拥有者的名字,也可以是一个整数,代表拥有者的id,还可以是NULL,代表系统拥有该事件,更可以是一个包含两个元素的数组,其中第一个元素是一个代表拥有者名字的字符串,或者代表拥有者id的整数,或者代表系统的NULL,第二个元素是一个代表时标的浮点数,但要注意这里的时标不是真正的时标,该浮点数可以是任意值。该浮点数的值在清除本绘图事件时会发挥作用。第二个参数是display,它既可以是screen display,也可以是image display。第三个参数是包含两个元素的数组([x,y]),表示该长方形左上顶点的位置。第四个和第五个参数为长方形的长度和高度。Clear_rect的例子包括:clear_rect(["my draw", 0.381], d, [128, 45], 18, 30)以及clear_rect(NULL, d, [23, 111], 70, 19)。

clone

::mfp::object::clone(1) :

clone(source_value)复制输入参数source_value并返回source_value的拷贝。输入参数可以是任何数据类型,包括字符串,数,复数以及数组。比如,如果变量a等于[1,2],用户执行语句variable b = clone(a)就会得的b等于[1,2]。但是这时候b和a是两个不同的数据。如果用户改变a的值,比如,设置a[0]等于3,a将会变成[3,2]但是b依然是[1,2]。

clone_image

::mfp::multimedia::image_lib::clone_image(7) :

clone_image(image_src, src_left, src_top, src_right, src_bottom, dest_width, dest_height)返回一个新的被包装过的JAVA图像对象。该图形对象的宽度为dest_width,高度为dest_height。这个被返回的图像是(被拉缩过的)原图像image_src的被选中的区块的拷贝。被选中的区块的左、上、右、下的坐标分别是src_left、src_top、src_right和src_bottom。注意src_left、src_top、src_right和src_botto是可选参数,它们的缺省值分别是0、0、image_src的宽度和image_src的高度。dest_width和dest_height也是可选参数。它们的缺省值分别是src_right - src_left以及src_bottom - src_top。本函数的一个例子为 clone_image(img_src, 0, 0, 100, 200, 50, 300)。

close_connection

::mfp::paracomp::connect::close_connection(1) :

close_connection关闭一个连接对象。它只有一个参数,就是connect函数,accept函数或者get_incoming_connect函数返回的连接对象。本函数的一个例子为close_connection(conn_obj)。

close_local

::mfp::paracomp::connect::close_local(1) :

close_local关闭一个本地网络界面。它只有一个参数,就是generate_interface函数返回的连接对象。本函数的一个例子为close_local(local_info)。

close_rtc_media_peer

::mfp::multimedia::webrtc_lib::close_rtc_media_peer(1) :

本函数关闭一个web RTC的peer connection对象。注意此处的web RTC是指的用于支持声音和视频通信的web RTC函数库,而不是用于支持数据通信的WEBRTC协议栈。本函数唯一的参数是peer connection对象的Id,也就是它的远端地址。

cofactor

::mfp::math::matrix::cofactor(1) :

函数cofactor(x)返回2维方阵x的余因子矩阵。

concat_ablists

::mfp::data_struct::array_based::concat_ablists(2) :

concat_ablists(list1, list2)将基于数组的序列list2并入基于数组的序列list1的尾部并返回合并后的基于数组的序列。作为参数的list1和list2和返回值共享元素。

connect

::mfp::paracomp::connect::connect(3) :

connect(local_info, remote_info, not_reuse_exist)函数建立一条从local_info所定义的本地网络界面到remote_info所定义的远端网络界面的网络连接。参数local_info和remote_info均可通过调用generate_interface函数获得。第三个参数也就是not_reuse_exist是一个可以省略的布尔值,其缺省值为false。如果它是true,本函数会重用本地网络界面和远端网络界面之间已存在的网络连接(如果有的话)。注意网络连接是双向的。一个网络连接无论是从本地网络界面连接到远端网络界面还是反过来,都是可以被本函数重用的。但需要注意的是,对于TCPIP协议,在服务端重用一个连入的网络连接不是那么容易。原因有两个,第一,当客户端发起一个连接时,客户端所使用的IP端口是由操作系统而不是MFP语言决定的,然而,在服务端,如果想要找到一个连入的网络连接,客户端的地址必须完整而精确,也就是说客户端的IP端口必不可少;其次,如果客户端和服务端之间存在NAT层,服务端不可能知道位于NAT层内部客户端实际的IP地址和端口。在这种情况下,如果想要重用已有的反向网络连接,MFP语言需要分析从客户端发送到服务端的消息,读取消息的"TransConnectDestRemote"值。该值就是该网络连接的客户端的地址的精确完整信息,如果该连接基于TCPIP协议,该值就是客户端的IP地址加IP端口。注意如果NAT层存在的话,该地址是从服务端看到的客户端地址而并非NAT层内部客户端实际的地址。获取客户端详细地址后再将该地址作为一个参数传入generate_interface函数便可获取准确的远端网络界面的信息,也就是remote_info。connect函数返回一个字典对象,如果调用成功,其"CONNECT"关键字的值便是连接对象的详细信息;反之,如果调用失败,"CONNECT"的值则是NULL,而额外的"ERROR"关键字的值就是出错信息。

conv

::mfp::sig_proc::conv(2) :

conv(input_a, inputb)返回input_a和input_b的卷积。Input_a和input_b要么都是一维向量,要么都是二维矩阵。当前本函数仅仅支持一维和二维卷积,比如:

conv([4,8,2,9],[5,3,8,9,6,7,8]) = [20, 52, 66, 151, 139, 166, 181, 132, 79, 72]

conv([[4,8,2,9],[8,6,7,9],[2,2,8,-4]],[[-5,i,7],[0.6,8,4]]) = [[-20, -40 + 4 * i, 18 + 8 * i, 11 + 2 * i, 14 + 9 * i, 63], [-37.6, 6.8 + 8 * i, 102.2 + 6 * i, 50.4 + 7 * i, 129 + 9 * i, 99], [-5.2, 57.6 + 2 * i, 58.2 + 2 * i, 119.4 + 8 * i, 156 - 4 * i, 8], [1.2, 17.2, 28.8, 69.6, 0, -16]]

conv_bin_to_dec

::mfp::math::number::conv_bin_to_dec(1) :

conv_bin_to_dec(x)将一个二进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个十进制的数值。

conv_bin_to_hex

::mfp::math::number::conv_bin_to_hex(1) :

conv_bin_to_hex(x)将一个二进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个代表16进制数的字符串。

conv_bin_to_oct

::mfp::math::number::conv_bin_to_oct(1) :

conv_bin_to_oct(x)将一个二进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个代表八进制数的字符串。

conv_dec_to_bin

::mfp::math::number::conv_dec_to_bin(1) :

conv_dec_to_bin(x)将一个十进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个代表二进制数的字符串。

conv_dec_to_hex

::mfp::math::number::conv_dec_to_hex(1) :

conv_dec_to_hex(x)将一个十进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个代表16进制数的字符串。

conv_dec_to_oct

::mfp::math::number::conv_dec_to_oct(1) :

conv_dec_to_oct(x)将一个十进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个代表八进制数的字符串。

conv_hex_to_bin

::mfp::math::number::conv_hex_to_bin(1) :

conv_hex_to_bin(x)将一个16进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个代表二进制数的字符串。

conv_hex_to_dec

::mfp::math::number::conv_hex_to_dec(1) :

conv_hex_to_dec(x)将一个16进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个十进制的数值。

conv_hex_to_oct

::mfp::math::number::conv_hex_to_oct(1) :

conv_hex_to_oct(x)将一个16进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个代表八进制数的字符串。

conv_ints_to_str

::mfp::string::conv_ints_to_str(1) :

conv_ints_to_str(int_or_array)将一个整数或者一组整数转换成一个Unicode字符串。如果只有一个整数,返回的字符串只包含一个Unicode字符,否则,返回字符串的字符数目和int_or_array中的元素数目一致。如果需要转换的整数是负数或者超出了Unicode字符集的定义范围,则被转换成整数0所对应的Unicode字符。示例包括conv_ints_to_str([20320, 22909, 25105, 22909, 22823, 23478, 22909])返回"你好我好大家好",以及conv_ints_to_str(20320)返回"你"。

conv_oct_to_bin

::mfp::math::number::conv_oct_to_bin(1) :

conv_oct_to_bin(x)将一个八进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个代表二进制数的字符串。

conv_oct_to_dec

::mfp::math::number::conv_oct_to_dec(1) :

conv_oct_to_dec(x)将一个八进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个十进制的数值。

conv_oct_to_hex

::mfp::math::number::conv_oct_to_hex(1) :

conv_oct_to_hex(x)将一个八进制的非负数或代表该数的字符串x(x可以为浮点数,也可以为整数)转换为一个代表16进制数的字符串。

conv_str_to_ints

::mfp::string::conv_str_to_ints(1) :

conv_str_to_ints(str)将一个Unicode字符串转换成一个整数数组。通常,一个Unicode字符对应一个整数(但也有可能对应两个整数,如果该Unicode字符超出了UTF-16字符集的范围。但这种情况很少出现)。如果字符串是空的,则返回一个空数组。一个示例为conv_str_to_ints("你好我好大家好")返回[20320, 22909, 25105, 22909, 22823, 23478, 22909]。

convert_unit

::mfp::physics::convert_unit(3) :

函数convert_unit(value, from_unit, to_unit)将基于某一个单位的数值转换为基于另外一个单位的数值。第一个参数是将要转换的数值,第二个参数是将被转换的单位(单位是一个对大小写敏感的字符串),第三个参数是转换后的单位(单位是一个对大小写敏感的字符串)。比如,convert_unit(23.71, "m", "km")。

本函数支持以下单位:

1. 长度单位: "um" (微米), "mm" (毫米), "cm" (厘米), "m" (米), "km" (公里), "in" (英寸), "ft" (英尺), "yd" (码), "mi" (英里), "nmi" (海浬), "AU" (天文单位), "ly" (光年), "pc" (秒差距);

2. 面积单位: "mm2" (平方毫米), "cm2" (平方厘米), "m2" (平方米), "ha" (公顷), "km2" (平方公里), "sq in" (平方英寸), "sq ft" (平方英尺), "sq yd" (平方码), "ac" (英亩), "sq mi" (平方英里);

3. 体积单位: "mL" (毫升), "L" (升), "m3" (立方米), "cu in" (立方英寸), "cu ft" (立方英尺), "cu yd" (立方码), "km3" (立方公里), "fl oz(Imp)" (液盎司(英制)), "pt(Imp)" (品脱(英制)), "gal(Imp)" (加仑(英制)), "fl oz(US)" (液盎司(美制)), "pt(US)" (品脱(美制)), "gal(US)" (加仑(美制));

4. 质量单位: "ug" (微克), "mg" (毫克), "g" (克), "kg" (千克), "t" (吨), "oz" (盎司), "lb" (磅), "jin" (市斤), "jin(HK)" (斤(香港)), "jin(TW)" (台斤);

5. 速度单位: "m/s" (米每秒), "km/h" (千米每小时), "ft/s" (英尺每秒), "mph" (英里每小时), "knot" (节);

6. 时间单位: "ns" (纳秒), "us" (微秒), "ms" (毫秒), "s" (秒), "min" (分钟), "h" (小时), "d" (天), "wk" (礼拜), "yr" (年);

7. 力单位: "N" (牛顿), "kgf" (千克力), "lbF" (磅力);

8. 压强单位: "Pa" (帕斯卡), "hPa" (百帕), "kPa" (千帕), "MPa" (兆帕), "atm" (大气压), "psi" (每平方英寸上受到的磅力压力), "Torr" (毫米汞柱);

9. 能量单位: "J" (焦耳), "kJ" (千焦), "MJ" (兆焦), "kWh" (千瓦时), "cal" (卡路里), "kcal" (千卡), "BTU" (英热单位);

10. 功率单位: "W" (瓦特), "kW" (千瓦), "MW" (兆瓦), "cal/s" (卡路里每秒), "BTU/h" (英热单位每小时), "hp" (马力);

11. 温度单位: "0C" (摄氏度), "0F" (华氏度), "K" (开氏温标);

copy_file

::mfp::io::file::copy_file(3) :

copy_file(source, destination, replace_exist)函数拷贝位于字符串source路径的文件或文件夹到位于字符串destination路径的文件或文件夹。如果第三个参数,replace_exist,是true,那么如果目标文件已经存在,它将会被源文件(或者源文件夹中的对应文件)替换。注意第三个参数可以省略,它的缺省值为false。 例子包括copy_file("c:\\temp\\try1", "D:\\", true) (Windows)和copy_file("/mnt/sdcard/testfile.txt", "./testfile_copy.txt") (Android)。

copy_to_resource

::mfp_compiler::annotation::build_asset::copy_to_resource(2) :

copy_to_resource(source_path, destination_path)是一个用于编译的函数,也就是说它在打包脚本生成MFP应用时发挥作用。本函数source_path所指向的目标文件会被函数拷贝到assets目录下的destination_path所指向的文件。这样一来,一个从本脚本生成的MFP应用仍然能够在该应用的assets中找到程序中引用的图像或者声音文件。本函数返回一个包含三个元素的数组,第一个元素是一个字符串包含源文件路径,第二个是基于字符串的资源文件名,第三个是目标路径。

cos

::mfp::math::trigon::cos(1) :

cos(x)返回x的余弦值,注意x可以为复数。

cosd

::mfp::math::trigon::cosd(1) :

cosd(x)返回基于角度的x的余弦值。

cosh

::mfp::math::trigon::cosh(1) :

函数cosh(x)为双曲余弦函数。

create_abdict

::mfp::data_struct::array_based::create_abdict(0) :

create_abdict()创建一个新的,基于数组的字典。

create_file

::mfp::io::file::create_file(2) :

create_file(path, is_folder)创建一个文件(如果is_folder是false或者不存在)或者目录(如果if_folder是true)。如果这个基于字符串的路径path的上级目录不存在,不存在的上级目录将会被创建。如果文件能够被创建,这个函数返回true,否则返回false。例子包括create_file("c:\\temp\\try1", true) (Windows)和create_file("testfile_copy.txt") (Android)。

create_image

::mfp::multimedia::image_lib::create_image(2) :

create_image(w, h)返回一个全新的,空白的被包装过的JAVA图像对象。该图形对象的宽度为w,高度为h。

create_rtc_media_answer

::mfp::multimedia::webrtc_lib::create_rtc_media_answer(5) :

本函数在接收到一个offer信令之后创建一个web RTC的answer信令。注意此处的web RTC是指的用于支持声音和视频通信的web RTC函数库,而不是用于支持数据通信的WEBRTC协议栈。本函数有5个参数。第一个是peer connection对象的id。第二个是SDP的类型。该参数应该就是一个"offer"字符串。第三个参数是SDP的内容,也就是offer信令的内容。第四个参数是强制性的限制参数集。最后一个参数是可选的限制参数集。最后一个参数可以省略。本函数的一个例子是create_rtc_media_answer(remoteAddr, sdpType, sdpContent, [["OfferToReceiveAudio", "true"], ["OfferToReceiveVideo", supportVideoStr]], [["DtlsSrtpKeyAgreement", "true"]])。

create_rtc_media_offer

::mfp::multimedia::webrtc_lib::create_rtc_media_offer(3) :

本函数创建一个web RTC的offer信令。注意此处的web RTC是指的用于支持声音和视频通信的web RTC函数库,而不是用于支持数据通信的WEBRTC协议栈。本函数有3个参数。第一个是peer connection对象的id。第二个参数是强制性的限制参数集。最后一个参数是可选的限制参数集。最后一个参数可以省略。本函数的一个例子是create_rtc_media_offer(remoteAddr, [["OfferToReceiveAudio", "true"], ["OfferToReceiveVideo", supportVideoStr]], [["DtlsSrtpKeyAgreement", "true"]])。

delete_file

::mfp::io::file::delete_file(2) :

delete_file(path, delete_children_in_folder)删除一个位于字符串path的文件或者目录。如果是一个目录且第二个参数delete_children_in_folder是true,目录中的所以文件和子目录将会被删除。注意第二个参数可以省略,它的缺省值是false。如果删除成功,本函数返回true,否则返回false。例子包括delete_file("c:\\temp\\try1", true) (Windows)和delete_file("testfile_copy.txt") (Android)。

deri_ridders

::mfp::math::calculus::deri_ridders(4) :

deri_ridders(expr, var, val, ord)返回基于变量var的表达式expr在var等于val的时候的ord阶导数值。这个函数使用Ridders法进行计算。比如,deri_ridders("x**2+x","x",3,2)返回2。

derivative

::mfp::math::calculus::derivative(2) :

derivative(expression, variable)返回基于变量variable的表达式expression的导数表达式。注意expression和variable均为字符串。比如,derivative("x**2+x","x")返回一个字符串表达式"2*x+1"。

::mfp::math::calculus::derivative(4) :

derivative(expr, var, val, method)返回基于变量var的表达式expr在var等于val的时候的导数值。参数method用于选择计算方法,如果是true,意味着使用Ridders法进行计算,如果是false,则只是简单地计算导数表达式在val时候的值。比如,derivative("x**2+x","x",2,true)返回5。

det

::mfp::math::matrix::det(1) :

det(x)计算2维方阵x的行列式值。

deter

::mfp::math::matrix::deter(1) :

deter(x)计算2维方阵x的行列式值。

dir

::mfp::io::file::dir(1) :

print_file_list(path) (别名ls(path)或者dir(path))函数和Windows平台上的dir命令以及Linux平台上的ls命令类似。它打印出位于字符串path路径的文件或者目录中的所有子文件和子目录的信息。它返回打印的条目的个数。如果不存在一个文件或者目录对应于path路径,它返回-1。注意参数path是可以省略的。它的缺省值是当前目录。例子包括dir() (Windows)和ls("../testfile_copy.txt") (Android)。

dprod

::mfp::math::matrix::dprod(2) :

函数dprod用于计算两个向量 [x1, x2, ... xn]和[y1, y2, ... yn]的点乘值。

draw_image

::mfp::graph_lib::draw::draw_image(12) :

draw_image为绘图事件调度器添加一个绘制图像的事件。在绘图事件调度器调用这个绘制事件时,该事件将在display上绘制一个图像。Draw_image有两个不同的重载调用方式。第一个是draw_image(owner_info, display, image_or_path, left, top, width_ratio, height_ratio, painting_extra_info)。第二个是draw_image(owner_info, display, image_or_path, srcx1, srcy1, srcx2, srcy2, destx1, desty1, destx2, desty2, painting_extra_info)。在这两种不同的调用方式中,第一个参数是owner_info。Owner_info告诉绘图事件调度器谁拥有这个绘图事件。Owner_info可以是一个字符串,代表拥有者的名字,也可以是一个整数,代表拥有者的id,还可以是NULL,代表系统拥有该事件,更可以是一个包含两个元素的数组,其中第一个元素是一个代表拥有者名字的字符串,或者代表拥有者id的整数,或者代表系统的NULL,第二个元素是一个代表时标的浮点数,但要注意这里的时标不是真正的时标,该浮点数可以是任意值。该浮点数的值在清除本绘图事件时会发挥作用。第二个参数是display,它既可以是screen display,也可以是image display。第三个参数是图像的句柄或者是一个指向图像文件的地址字符串。最后一个参数是painting_extra_info,它告诉绘图事件调度器采用什么样的porterduff模式来绘制目标图像。这个参数是可选参数。porterduff模式内部机制比较复杂,建议开发者省略这个参数(也就是使用参数的缺省值)。如果开发者想要详细了解painting extra info,可以参考set_porterduff_mode以及get_porterduff_mode的函数帮助信息。如果开发者想要详细了解porterduff模式,建议阅读相关的JAVA文档。在第一种调用方式中,从第四个到第七个参数分别是图像将被绘制的位置的左边界的坐标,图像将被绘制的位置的上边界坐标,图像绘制时沿长度方向的缩放比例(是一个可以省略的参数,它的缺省值为1),以及图像绘制时沿高度方向的缩放比例(是一个可以省略的参数,它的缺省值为1)。在第二种调用方式中,从第四个到第十一个参数分别是选取图像将被绘制的部分的源长方形的左边界,选取图像将被绘制的部分的源长方形的上边界,选取图像将被绘制的部分的源长方形的右边界,选取图像将被绘制的部分的源长方形的下边界,目标位置的左边界,目标位置的上边界,目标位置的右边界以及目标位置的下边界。Draw_image的例子包括:draw_image("image", display, get_upper_level_path(get_src_file_path()) + "gem4.png", 48, 157) ,draw_image("image", display, gem3Img, 148, 257, 3, 0.5)以及draw_image("imagesrc", display, gem3Img, 0, 0, 32, 32, 210, 540, 300, 580, a_painting_extra_info)。

draw_line

::mfp::graph_lib::draw::draw_line(7) :

draw_line(owner_info, display, start_point_place, end_point_place, color, line_style, painting_extra_info)为绘图事件调度器添加一个绘制线段的事件。在绘图事件调度器调用这个绘制线段的事件时,该事件将在display上绘制一条线。Draw_line有7个参数。第一个参数是owner_info。Owner_info告诉绘图事件调度器谁拥有这个绘图事件。Owner_info可以是一个字符串,代表拥有者的名字,也可以是一个整数,代表拥有者的id,还可以是NULL,代表系统拥有该事件,更可以是一个包含两个元素的数组,其中第一个元素是一个代表拥有者名字的字符串,或者代表拥有者id的整数,或者代表系统的NULL,第二个元素是一个代表时标的浮点数,但要注意这里的时标不是真正的时标,该浮点数可以是任意值。该浮点数的值在清除本绘图事件时会发挥作用。第二个参数是display,它既可以是screen display,也可以是image display。第三个参数和第四个参数是线段的起始位置([x1,y1])和终止位置([x2,y2]),它们均为包含两个元素的数组。第五个参数是color,代表绘制使用的颜色,它是一个4个或3个元素的数组,如果是4个元素,就是[Alpha,R,G,B],如果是3个元素,就是[R,G,B],在该数组中,每一个元素的值都是从0到255。第六个参数是line_style。在现阶段它是一个包含一个元素的数组,该元素是一个正整数,代表线的粗细。这个参数是可省略的,它的缺省值是[1]。最后一个参数是painting_extra_info,它告诉绘图事件调度器采用什么样的porterduff模式来绘制目标图像。这个参数也是可选参数。porterduff模式内部机制比较复杂,建议开发者省略这个参数(也就是使用参数的缺省值)。如果开发者想要详细了解painting extra info,可以参考set_porterduff_mode以及get_porterduff_mode的函数帮助信息。如果开发者想要详细了解porterduff模式,建议阅读相关的JAVA文档。

Draw_line的例子包括:draw_line(["my draw", 0.381], d, [128, 45], [250, -72], [79, 255, 0, 142])以及draw_line(NULL, d, [23, 111], [70, 333], [23, 178, 222], [7])。

draw_oval

::mfp::graph_lib::draw::draw_oval(8) :

draw_oval(owner_info, display, left_top, width, height, color, frame_or_fill, painting_extra_info)为绘图事件调度器添加一个绘制椭圆形的事件。在绘图事件调度器调用这个绘制事件时,该事件将在display上绘制一个椭圆形。Draw_oval有至少7个参数。第一个参数是owner_info。Owner_info告诉绘图事件调度器谁拥有这个绘图事件。Owner_info可以是一个字符串,代表拥有者的名字,也可以是一个整数,代表拥有者的id,还可以是NULL,代表系统拥有该事件,更可以是一个包含两个元素的数组,其中第一个元素是一个代表拥有者名字的字符串,或者代表拥有者id的整数,或者代表系统的NULL,第二个元素是一个代表时标的浮点数,但要注意这里的时标不是真正的时标,该浮点数可以是任意值。该浮点数的值在清除本绘图事件时会发挥作用。第二个参数是display,它既可以是screen display,也可以是image display。第三个参数是包含两个元素的数组([x,y]),表示该椭圆的包络长方形左上顶点的位置。第四个和第五个参数为该椭圆的包络长方形的长度和高度。紧接着的参数是color,代表绘制使用的颜色,它是一个4个或3个元素的数组,如果是4个元素,就是[Alpha,R,G,B],如果是3个元素,就是[R,G,B],在该数组中,每一个元素的值都是从0到255。倒数第二个参数是是一个整数。它等于或小于零表示填充椭圆形,大于零表示椭圆形的边的宽度。最后一个参数是painting_extra_info,它告诉绘图事件调度器采用什么样的porterduff模式来绘制目标图像。这个参数是可选参数。porterduff模式内部机制比较复杂,建议开发者省略这个参数(也就是使用参数的缺省值)。如果开发者想要详细了解painting extra info,可以参考set_porterduff_mode以及get_porterduff_mode的函数帮助信息。如果开发者想要详细了解porterduff模式,建议阅读相关的JAVA文档。

Draw_oval的例子包括:draw_oval(["my draw", 0.381], d, [128, 45], 18, 30, [79, 255, 0, 142], 0)以及draw_oval(NULL, d, [23, 111], 70, 19, [23, 178, 222], 3)。

draw_point

::mfp::graph_lib::draw::draw_point(6) :

draw_point(owner_info, display, point_place, color, point_style, painting_extra_info)为绘图事件调度器添加一个绘制点的事件。在绘图事件调度器调用这个绘制点的事件时,该事件将在display上绘制一个点。Draw_point有六个参数。第一个参数是owner_info。Owner_info告诉绘图事件调度器谁拥有这个绘图事件。Owner_info可以是一个字符串,代表拥有者的名字,也可以是一个整数,代表拥有者的id,还可以是NULL,代表系统拥有该事件,更可以是一个包含两个元素的数组,其中第一个元素是一个代表拥有者名字的字符串,或者代表拥有者id的整数,或者代表系统的NULL,第二个元素是一个代表时标的浮点数,但要注意这里的时标不是真正的时标,该浮点数可以是任意值。该浮点数的值在清除本绘图事件时会发挥作用。第二个参数是display,它既可以是screen display,也可以是image display。第三个参数是point_place,也就是点的位置,他是一个包含两个元素的数组,也就是[x,y]。第四个参数color,代表点的颜色,它是一个4个或3个元素的数组,如果是4个元素,就是[Alpha,R,G,B],如果是3个元素,就是[R,G,B],在该数组中,每一个元素的值都是从0到255。第五个参数是point_style。在现阶段它的格式是[point_size, point_shape]。Point_size是点的大小。它是一个正整数。Point_shape是一个字符串,代表点的形状,可以取以下值:"dot"(点,注意它的大小只能是1,point_size对它不起作用),"circle"(圆圈),"square"(方块),"diamond"(正菱形),"up_triangle"(尖朝上的三角形),"down_triangle"(尖朝下的三角形),"cross"(十字形)和"x"(叉号)。这个参数是可省略的,它的缺省值是[1, "dot"]。最后一个参数是painting_extra_info,它告诉绘图事件调度器采用什么样的porterduff模式来绘制目标图像。这个参数也是可选参数。porterduff模式内部机制比较复杂,建议开发者省略这个参数(也就是使用参数的缺省值)。如果开发者想要详细了解painting extra info,可以参考set_porterduff_mode以及get_porterduff_mode的函数帮助信息。如果开发者想要详细了解porterduff模式,建议阅读相关的JAVA文档。

Draw_point的例子包括:draw_point(["my draw", 0.381], d, [128, 45], [79, 255, 0, 142])以及draw_point(NULL, d, [23, 111], [23, 178, 222], [78, "square"])。

draw_polygon

::mfp::graph_lib::draw::draw_polygon(7...) :

draw_polygon(owner_info, display, point1_place, point2_place, point3_place, ..., color, frame_or_fill, painting_extra_info)为绘图事件调度器添加一个绘制多边形的事件。在绘图事件调度器调用这个绘制事件时,该事件将在display上绘制一个多边形。Draw_polygon有至少7个参数。第一个参数是owner_info。Owner_info告诉绘图事件调度器谁拥有这个绘图事件。Owner_info可以是一个字符串,代表拥有者的名字,也可以是一个整数,代表拥有者的id,还可以是NULL,代表系统拥有该事件,更可以是一个包含两个元素的数组,其中第一个元素是一个代表拥有者名字的字符串,或者代表拥有者id的整数,或者代表系统的NULL,第二个元素是一个代表时标的浮点数,但要注意这里的时标不是真正的时标,该浮点数可以是任意值。该浮点数的值在清除本绘图事件时会发挥作用。第二个参数是display,它既可以是screen display,也可以是image display。从第三个参数开始是多边形顶点的位置,它们均为包含两个元素的数组。紧接着的参数是color,代表绘制使用的颜色,它是一个4个或3个元素的数组,如果是4个元素,就是[Alpha,R,G,B],如果是3个元素,就是[R,G,B],在该数组中,每一个元素的值都是从0到255。倒数第二个参数是是一个整数。它等于或小于零表示填充多边形,大于零表示多边形的边的宽度。最后一个参数是painting_extra_info,它告诉绘图事件调度器采用什么样的porterduff模式来绘制目标图像。这个参数是可选参数。porterduff模式内部机制比较复杂,建议开发者省略这个参数(也就是使用参数的缺省值)。如果开发者想要详细了解painting extra info,可以参考set_porterduff_mode以及get_porterduff_mode的函数帮助信息。如果开发者想要详细了解porterduff模式,建议阅读相关的JAVA文档。

Draw_polygon的例子包括:draw_polygon(["my draw", 0.381], d, [128, 45], [250, -72], [338, 29], [79, 255, 0, 142], 0)以及draw_polygon(NULL, d, [23, 111], [70, 333], [-239, 89], [66, 183], [23, 178, 222], 3)。

draw_rect

::mfp::graph_lib::draw::draw_rect(8) :

draw_rect(owner_info, display, left_top, width, height, color, frame_or_fill, painting_extra_info)为绘图事件调度器添加一个绘制长方形的事件。在绘图事件调度器调用这个绘制事件时,该事件将在display上绘制一个长方形。Draw_rect有至少7个参数。第一个参数是owner_info。Owner_info告诉绘图事件调度器谁拥有这个绘图事件。Owner_info可以是一个字符串,代表拥有者的名字,也可以是一个整数,代表拥有者的id,还可以是NULL,代表系统拥有该事件,更可以是一个包含两个元素的数组,其中第一个元素是一个代表拥有者名字的字符串,或者代表拥有者id的整数,或者代表系统的NULL,第二个元素是一个代表时标的浮点数,但要注意这里的时标不是真正的时标,该浮点数可以是任意值。该浮点数的值在清除本绘图事件时会发挥作用。第二个参数是display,它既可以是screen display,也可以是image display。第三个参数是包含两个元素的数组([x,y]),表示该长方形左上顶点的位置。第四个和第五个参数为长方形的长度和高度。紧接着的参数是color,代表绘制使用的颜色,它是一个4个或3个元素的数组,如果是4个元素,就是[Alpha,R,G,B],如果是3个元素,就是[R,G,B],在该数组中,每一个元素的值都是从0到255。倒数第二个参数是是一个整数。它等于或小于零表示填充长方形,大于零表示长方形的边的宽度。最后一个参数是painting_extra_info,它告诉绘图事件调度器采用什么样的porterduff模式来绘制目标图像。这个参数是可选参数。porterduff模式内部机制比较复杂,建议开发者省略这个参数(也就是使用参数的缺省值)。如果开发者想要详细了解painting extra info,可以参考set_porterduff_mode以及get_porterduff_mode的函数帮助信息。如果开发者想要详细了解porterduff模式,建议阅读相关的JAVA文档。

Draw_rect的例子包括:draw_rect(["my draw", 0.381], d, [128, 45], 18, 30, [79, 255, 0, 142], 0)以及draw_rect(NULL, d, [23, 111], 70, 19, [23, 178, 222], 3)。

draw_text

::mfp::graph_lib::draw::draw_text(7) :

draw_text(owner_info, display, string, origin_place, color, text_style, painting_extra_info)为绘图事件调度器添加一个绘制文本块的事件。在绘图事件调度器调用这个绘制事件时,该事件将在display上绘制一个文本块。Draw_text的第一个参数是owner_info。Owner_info告诉绘图事件调度器谁拥有这个绘图事件。Owner_info可以是一个字符串,代表拥有者的名字,也可以是一个整数,代表拥有者的id,还可以是NULL,代表系统拥有该事件,更可以是一个包含两个元素的数组,其中第一个元素是一个代表拥有者名字的字符串,或者代表拥有者id的整数,或者代表系统的NULL,第二个元素是一个代表时标的浮点数,但要注意这里的时标不是真正的时标,该浮点数可以是任意值。该浮点数的值在清除本绘图事件时会发挥作用。第二个参数是display,它既可以是screen display,也可以是image display。第三个参数是基于字符串的文本块,它可以多于一行。第四个参数是文本块起始点的位置。这是一个两元素数组,第一个元素是起始点横坐标,第二个元素是起始点纵坐标。第五个参数是color,代表绘制使用的颜色,它是一个4个或3个元素的数组,如果是4个元素,就是[Alpha,R,G,B],如果是3个元素,就是[R,G,B],在该数组中,每一个元素的值都是从0到255。第六个参数是可省略参数,用于定义文本的字体和大小。如果它被省略,则字体为系统缺省字体,大小为16。如果它不被省略,那么它必须是一个包含一个或者两个元素的数组。如果是一个元素的数组,那么该元素必须是一个正整数,代表字体的大小,而字体则为系统缺省字体。如果是包含两个元素的数组,那么第一个元素为字体的大小,第二个元素是基于字符串的字体的名字。最后一个参数是painting_extra_info,它告诉绘图事件调度器采用什么样的porterduff模式来绘制目标图像。这个参数是可选参数。porterduff模式内部机制比较复杂,建议开发者省略这个参数(也就是使用参数的缺省值)。如果开发者想要详细了解painting extra info,可以参考set_porterduff_mode以及get_porterduff_mode的函数帮助信息。如果开发者想要详细了解porterduff模式,建议阅读相关的JAVA文档。Draw_text的例子包括draw_text("image", display, txtStr, [108, 190], [255, 255, 255], [10 + idx, font])以及draw_text("image", display, txtStr, [108, 190], [255, 255, 255], [idx * 2])。

drop_old_painting_requests

::mfp::graph_lib::draw::drop_old_painting_requests(2) :

drop_old_painting_requests(owner_info, display)用于从screen或者image display的绘图事件调度器中移除一些绘图事件。移除的标准为,检查一个绘图事件的owner_info参数(也就是该事件的拥有者和创建时标),如果该绘图事件的拥有者和drop_old_painting_requests的拥有者完全一样,并且创建时标早于(小于)drop_old_painting_requests的创建时标,则该事件被移除。注意,有很多owner_info参数不包括创建时标,这种情况下创建时标为创建时的系统时间。本函数的例子为:drop_old_painting_requests("my owner", display)。该例子等价于drop_old_painting_requests(["my owner", now()], display)。

eig

::mfp::math::matrix::eig(1) :

eig(A)计算2维方阵A的特征向量和特征值。这个函数返回一个包含两个成员的列表。第一个成员是特征向量矩阵,每一列是一个特征向量。第二个成员是一个对角矩阵,每一个对角线元素是一个特征值。注意运算这个函数非常耗费内存和CPU资源,如果在手机上运行,矩阵A的尺寸最好不要超过6*6,如果在电脑上运行,最好不要超过8*8,否则可能造成内存不足而程序崩溃或者运行很长时间而没有结果。

::mfp::math::matrix::eig(2) :

eig(A, B)计算2维方阵A相对于同样尺寸的方阵B的特征向量和特征值,也就是Av = lambda * Bv,在这里,。lambda是一个特征值,v是一个特征向量。第二个参数,B,可以省略,其缺省值为I矩阵。这个函数返回一个包含两个成员的列表。第一个成员是特征向量矩阵,每一列是一个特征向量。第二个成员是一个对角矩阵,每一个对角线元素是一个特征值。注意运算这个函数非常耗费内存和CPU资源,如果在手机上运行,矩阵A的尺寸最好不要超过6*6,如果在电脑上运行,最好不要超过8*8,否则可能造成内存不足而程序崩溃或者运行很长时间而没有结果。

evaluate

::mfp::statement::evaluate(1...) :

evaluate(expr_string,var_string1,var_value1,var_string2,var_value2, ...) 返回当基于字符串的变量var_string1等于var_value1,var_string2等于var_value2,...时,基于字符串的表达式expr_string的值。注意变量var_string1,var_string2,...的值可以为任意类型。变量的数目可以为0,也就是说,evaluate("3+2")是合法的。

exp

::mfp::math::log_exp::exp(1) :

exp(x)返回自然对数e的x次方,x可以为实数或者虚数。

expr_to_string

::mfp::statement::expr_to_string(1) :

expr_to_string(expr)将一个基于字符串的表达式expr转换成一个字符串。如果表达式中包含已经定义的函数,函数名将会被转换为全名,也就是绝对引用空间加函数名。比如expr_to_string("pwd()")将会返回"::mfp::io::file::pwd()"但是expr_to_string("pwd(1, 2)")将会返回"pwd(1,2)",原因在于pwd函数没有参数,所以pwd()是合法的但是pwd(1,2)是调用一个没有定义的函数。

eye

::mfp::math::matrix::eye(1) :

eye(x)返回正整数x乘x的2维方阵I。注意表达式eye(0)返回常数1。

::mfp::math::matrix::eye(2) :

eye(x,y)返回y(y为正整数)维方阵I,注意每一维长度均为正整数x。

fact

::mfp::math::number::fact(1) :

函数fact(x)计算非负整数x的阶乘。

fclose

::mfp::io::file::fclose(1) :

fclose(fd)关闭文件号fd所对应的文件。如果文件号不存在,返回-1,否则返回0。

feof

::mfp::io::file::feof(1) :

feof(fd)用于确定是否已经到达文件号为fd的读模式文件的末尾。如果是,返回true,否则返回false。如果文件号不合法,抛出异常。

fft

::mfp::sig_proc::fft(1...) :

FFT(a, ...)返回对一个数值向量作快速傅立叶变换后的值。注意数值向量中数值的个数必须是2的整数次方。如果参数a是一个数值序列,则本函数只可能拥有一个参数,返回值为对序列a[0], a[1], ..., a[N-1]作快速傅立叶变换的返回值。如果参数a仅仅是一个实数或者虚数,则本函数最少包含2个参数,而返回序列a, optional_params[0], ..., optional_params[number_of_optional_params - 2], optional_params[number_of_optional_params - 1]快速傅立叶变换后的值。注意返回值总是一个数组。

函数例子:

FFT(1, 2, 3, 4)返回[10, -2+2i, -2, -2 - 2i];

FFT([1, 2, 3, 4])同样也是返回[10, -2+2i, -2, -2 - 2i];

floor

::mfp::math::number::floor(1) :

floor(x),x是浮点数,返回不大于x的最大整数。

::mfp::math::number::floor(2) :

floor(x,y),x是浮点数,y是非负整数,返回不大于x的小数点后面保留y位有效数字的最大数值。

fopen

::mfp::io::file::fopen(2) :

fopen(path, mode)打开位于path路径的文件并返回文件号以进行后续读写操作。它和C以及Matlab中的同名函数用法相似。但它仅支持"r"、"a"、"w"、"rb"、"ab"和"wb"六种读写模式。例子包括fopen("C:\\Temp\\Hello.dat", "ab") (Windows)和fopen("./hello.txt", "r") (Android)。

::mfp::io::file::fopen(3) :

fopen(path, mode, encoding)用字符编码encoding打开位于path路径的文件并返回文件号以进行后续读写操作。由于只有文本文件支持字符编码,参数mode只能为"r"、"a"和"w"3种读写模式。例子包括fopen("C:\\Temp\\Hello.txt", "a", "LATIN-1") (Windows)和fopen("./hello.txt", "r", "UTF-8") (Android)。

fprintf

::mfp::io::file::fprintf(2...) :

printf(format_string, ...),sprintf(format_string, ...)和fprintf(fd, format_string, ...)和C/C++中的对应函数工作方式相似。这些函数通过format_string和其后的数值参数构造出一个新的字符串,printf函数将字符串打印到标准输出,sprintf函数将字符串作为返回值返回,fprintf函数则将字符串输出到文件号为fd的文本文件。字符串format_string支持输入整数(%d、%i、%x等),浮点数(%e、%f等),字符和字符串(%c和%s)等等。用户可以在C语言的帮助文档中找到format_string的构造方法。例如,printf("Hello world!%f", 3.14)将会打印输出"Hello world!3.140000",而sprintf("%c%d", "A", 9)则返回"A9"(注意MFP不支持单一字符数据类型,所以单一的字符将会存储为一个只包括一个字符的字符串)。

fread

::mfp::io::file::fread(4) :

fread(fd, buffer, from, length)从文件(文件号fd)中读取length个字节数据,并把读出的数据保存在数组buffer中(从buffer的索引from开始保存)。注意from和length必须非负,并且from+length必须不比buffer的容量大。参数from和length可以同时省略。如果它们被省略,意味着fread读取整个buffer容量的字节数据并保存在整个buffer中。Buffer也可以省略,如果buffer省略,fread读取一个字节并返回。如果fread在读取之前发现已经到达文件末尾,则返回-1,否则返回读取字节的个数(如果buffer不省略)。如果文件不存在或非法或不可以访问,将会抛出异常。例子包括fread(1)、fread(2, byte_buffer)以及fread(2, byte_buffer, 3, 7)。

freadline

::mfp::io::file::freadline(1) :

freadline(fd)读取文本文件(文件号是fd)的一行。如果freadline在读取之前发现已经到达文件末尾,它返回NULL。否则,它返回基于字符串的这一行的内容,但不包括结尾的换行符。

fscanf

::mfp::io::file::fscanf(2) :

scanf(format_string),sscanf(input_from, format_string)和fscanf(fd, format_string)和C/C++中的对应函数工作方式相似。scanf读取用户的一行输入,sscanf读取字符串input_from,fscanf从文件(文件号fd)中读取文件内容。字符串format_string支持输入整数(%d、%i、%x等),浮点数(%e、%f等),字符和字符串(%c和%s)等等。用户可以在C语言的帮助文档中找到format_string的构造方法。但是,和C语言有所不同,MFP中的这些函数不需要输入用于存储读取数值的参数。所有的读取的数值将会保存在一个数组中作为返回值返回。比如,sscanf("3Hello world!", "%d%c%c%s")将会返回[3, "H", "e", "llo"](注意MFP不支持单一字符数据类型,所以单一的字符将会存储为一个只包括一个字符的字符串)。

fwrite

::mfp::io::file::fwrite(4) :

fwrite(fd, buffer, from, length)向文件(文件号fd)中写入length个字节数据。这些字节数据保存在数组buffer中(从buffer的索引from开始)。注意from和length必须非负,并且from+length必须不比buffer的容量大。参数from和length可以同时省略。如果它们被省略,意味着fwrite写入整个buffer的字节数据。Buffer也可以是一个单独的字节,在这种情况下fwrite仅写入一个字节的数据。如果文件不存在或非法或不可以访问,将会抛出异常。例子包括fwrite(1, 108)、fwrite(2, byte_buffer)以及fwrite(2, byte_buffer, 3, 7)。

gamma

::mfp::math::stat_stoch::gamma(1) :

函数gamma(z)返回复数z的gamma函数值。注意z的实部必须是正数。

gavg

::mfp::math::stat_stoch::gavg(0...) :

函数gavg(…)返回任意个数参数的几何平均数值。

generate_interface

::mfp::paracomp::connect::generate_interface(2) :

generate_interface(protocol, address)返回一个本地interface对象的定义。它需要两个参数。第一个参数是基于字符串的通信协议名,比如"TCPIP";第二个参数是基于字符串的地址,比如"10.32.202.78"。第二个参数是可选参数,缺省值为本机的localhost地址,比如,对于"TCPIP"协议,本机localhost地址是"127.0.0.1"。

get_absolute_path

::mfp::io::file::get_absolute_path(1) :

get_absolute_path(fd_or_path)返回文件号fd_or_path(这里fd_or_path是一个整数)或者相对路径为fd_or_path(这里fd_or_path是一个字符串)所对应的文件的绝对路径字符串。

get_all_connect_call_ids

::mfp::paracomp::connect::get_all_connect_call_ids(1...) :

get_all_connect_call_ids返回一个网络界面所有的连接id或者一个连接的所有call沙盒id。它有两种模式。第一种调用模式只有一个参数,为一个代表本地网络界面信息的对象。 该对象为generate_interface函数的返回值。在这种模式下,本函数的返回值为所有从连入和连出的网络连接的id数组。注意如果本地信息不合法,本函数将抛出异常。第二种调用模式有三个参数。第一个参数为一个代表本地网络界面信息的对象。 该对象为generate_interface函数的返回值。第二个参数为一个连接对象的id(如果该连接是从本地到远端的连出网络连接,该id是远端地址,如果是连入网络连接,该id可以通过调用get_call_info函数得到)。第三个参数是一个布尔值,如果是true,这个函数返回所有通过该连接的连入的call沙盒id的数组,否则,这个函数返回所有通过该连接的连出的call沙盒id的数组。注意如果本地信息不合法,本函数将抛出异常。如果连接id不存在,将返回NULL。本函数的一个例子是get_all_connect_call_ids(server_interface, connect_id, false)。

get_all_host_addresses

::mfp::paracomp::host::get_all_host_addresses(1) :

get_all_host_addresses(protocol_name)返回protocol_name协议在本机的所有界面的所有地址。参数protocol_name是可选的。如果没有给出protocol_name参数或者给出是一个空的字符串,本函数返回本机所有被支持的通信协议在本机所有界面的所有地址。本函数的一个例子是get_all_host_addresses("TCPIP")。

get_all_referred_units

::mfp_compiler::annotation::compulsory_link::get_all_referred_units(0) :

get_all_referred_units()是一个用于编译的函数,也就是说它在打包脚本生成MFP应用时发挥作用。本函数返回一个数组,其中包括所有的用户定义的MFP函数和类的引用信息。

get_asset_file_path

::mfp::platform_hardware::platform_info::get_asset_file_path(1) :

get_asset_file_path(asset_file_entry)告诉开发人员一个asset文件(文件名由字符串参数asset_file_entry给出)的路径。注意,如果正在运行的脚本不是一个MFP应用,本函数返回null。

get_audio_track_enable

::mfp::multimedia::webrtc_lib::get_audio_track_enable(1) :

本函数测试音轨是否已经被激活。如果是,返回True,否则返回False。这个函数仅有一个参数,就是一个显示窗口的句柄。该句柄是open_screen_display函数的返回值。

get_call_info

::mfp::paracomp::connect::get_call_info(0) :

本函数如果不是在一个call沙盒中被调用,将会返回NULL。否则本函数返回一个数组。数组的第一个元素是调用本函数的call沙盒的id。数组的第二个元素是调用本函数的call沙盒所在的连接的id,数组的第三个元素是存有本地信息的对象。

get_canonical_path

::mfp::io::file::get_canonical_path(1) :

get_canonical_path(fd_or_path)返回文件号fd_or_path(这里fd_or_path是一个整数)或者相对路径为fd_or_path(这里fd_or_path是一个字符串)所对应的文件的标准路径(不依赖符号链接的绝对路径)字符串。

get_classes

::mfp_compiler::annotation::compulsory_link::get_classes(0...) :

get_classes(...) 是一个用于编译的函数,也就是说它在打包脚本生成MFP应用时发挥作用。本函数返回一个数组,其中包括所有的出现在参数中的MFP类的引用信息。

get_constant

::mfp::physics::get_constant(2) :

函数get_constant(const_name, n)返回一个由区分大小写的字符串const_name所对应的常数值,返回的数值将会四舍五入后保留小数点后面n位有效数值,这里n为非负整数并且可以省略。如果n被省略,返回值将不会被四舍五入处理。本函数支持以下常数:

1. 圆周率 (const_name == "pi");

2. 自然对数 (const_name == "e");

3. 真空中的光速 [m/s] (const_name == "light_speed_in_vacuum");

4. 万有引力常数 [m**3/kg/(s**2)] (const_name == "gravitational_constant");

5. 普朗克常数 [J*s] (const_name == "planck_constant");

6. 磁常数(真空磁导率) [N/(A**2)] (const_name == "magnetic_constant");

7. 电常数(真空电容率) [F/m] (const_name == "electric_constant");

8. 基本电荷 [c] (const_name == "elementary_charge_constant");

9. 阿伏伽德罗常数 [1/mol] (const_name == "avogadro_constant");

10. 法拉第常数 [C/mol] (const_name == "faraday_constant");

11. 气体常数 [J/mol/K] (const_name == "molar_gas_constant");

12. 玻尔兹曼常量 [J/K] (const_name == "boltzman_constant");

13. 标准重力 [m/(s**2)] (const_name == "standard_gravity");

例如,如果用户输入get_constant("pi", 4),结果将会是3.1416;如果用户输入get_constant("pi", 8),结果将会是3.14159265;如果用户输入get_constant("pi", 0),将会得到3,如果用户输入get_constant("pi")返回值将是3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679 (小数点后有100位数字),这个数值就是本软件内部所使用的圆周率数值。

get_country_language

::mfp::platform_hardware::platform_info::get_country_language(0) :

本函数返回一个包含两个元素的矩阵。第一个元素是一个基于字符串的国家代码。国家代码要么是一个空字符串,要么是一个大写的,符合ISO 3166国际标准的两字母的代码,要么是一个符合UN M.49的3个数字的代码。用户可以查询百度百科获取ISO 3166国家代码的列表。第二个元素是基于字符串的语言代码。它基本上符合ISO 639国际标准,除了极少数例外。出现例外的原因是ISO 639标准在变化,一些语言的代码已经发生了改变,而这个函数总是返回旧的代码。用户可以查询百度百科获取ISO 639所有的语言代码列表。

get_day_of_month

::mfp::time_date::get_day_of_month(1) :

get_year(timestamp),get_month(timestamp),get_day_of_year(timestamp),get_day_of_month(timestamp),get_day_of_week(timestamp),get_hour(timestamp),get_minute(timestamp),get_second(timestamp)和get_millisecond(timestamp) 分别返回时标timestamp所对应的年,月,本年中的第几天,本月中的第几天,本星期中的第几天(礼拜天是第0天,礼拜一是第一天,...),小时,分钟,秒钟和毫秒。时标是时标所表示的时刻和1970年1月1日午夜(UTC)的毫秒数时间差。例如,get_day_of_week(get_time_stamp(2014, 12, 21))返回0,表示2014年12月21日是礼拜天。

get_day_of_week

::mfp::time_date::get_day_of_week(1) :

get_year(timestamp),get_month(timestamp),get_day_of_year(timestamp),get_day_of_month(timestamp),get_day_of_week(timestamp),get_hour(timestamp),get_minute(timestamp),get_second(timestamp)和get_millisecond(timestamp) 分别返回时标timestamp所对应的年,月,本年中的第几天,本月中的第几天,本星期中的第几天(礼拜天是第0天,礼拜一是第一天,...),小时,分钟,秒钟和毫秒。时标是时标所表示的时刻和1970年1月1日午夜(UTC)的毫秒数时间差。例如,get_day_of_week(get_time_stamp(2014, 12, 21))返回0,表示2014年12月21日是礼拜天。

get_day_of_year

::mfp::time_date::get_day_of_year(1) :

get_year(timestamp),get_month(timestamp),get_day_of_year(timestamp),get_day_of_month(timestamp),get_day_of_week(timestamp),get_hour(timestamp),get_minute(timestamp),get_second(timestamp)和get_millisecond(timestamp) 分别返回时标timestamp所对应的年,月,本年中的第几天,本月中的第几天,本星期中的第几天(礼拜天是第0天,礼拜一是第一天,...),小时,分钟,秒钟和毫秒。时标是时标所表示的时刻和1970年1月1日午夜(UTC)的毫秒数时间差。例如,get_day_of_week(get_time_stamp(2014, 12, 21))返回0,表示2014年12月21日是礼拜天。

get_display_bgrnd_color

::mfp::graph_lib::display::get_display_bgrnd_color(1) :

get_display_bgrnd_color(display)返回一个display的背景色。该display既可以是screen display,也可以是image display。背景色是一个4个或3个元素的数组,如果是4个元素,就是[Alpha,R,G,B],如果是3个元素,就是[R,G,B],在该数组中,每一个元素的值都是从0到255。

get_display_bgrnd_image

::mfp::graph_lib::display::get_display_bgrnd_image(1) :

get_display_bgrnd_image(display)返回一个display的背景图像。

get_display_bgrnd_image_mode

::mfp::graph_lib::display::get_display_bgrnd_image_mode(1) :

get_display_bgrnd_image_mode(display)返回一个display的背景图像的布置方式。0表示原始背景图像被置于左上角,1表示背景图像被缩放值screen大小以便覆盖整个screen,2表示背景图像如贴瓷砖一样重复整齐排列,但每一片“瓷砖”大小保持原状, 3背景图像位于屏幕正中央。在这种情况下背景图像的大小也不会改变。

get_display_caption

::mfp::graph_lib::display::get_display_caption(1) :

get_display_caption(display)在JAVA平台上返回一个screen display的标题。对于image display,或者是对于安卓平台,get_display_caption总是返回空字符串。

get_display_confirm_close

::mfp::graph_lib::display::get_display_confirm_close(1) :

get_display_confirm_close(display)返回关闭一个screen display是否需要确认。对于image display,get_display_confirm_close总是返回FALSE。

get_display_orientation

::mfp::graph_lib::display::get_display_orientation(1) :

get_display_orientation(display)返回一个screen display是横屏(0)还是竖屏(1)还是横竖均可(-1)。对于image display,或者在JAVA平台上,get_display_orientation总是返回-1。

get_display_resizable

::mfp::graph_lib::display::get_display_resizable(1) :

get_display_resizable(display)用于返回一个布尔量,表示一个screen display是否可以改变大小。对于image display,get_display_resizable总是返回false。

get_display_size

::mfp::graph_lib::display::get_display_size(1) :

get_display_size(display)返回一个display(既可以是screen display,也可以是image display)的长度和高度。返回值是一个包含两个元素的矩阵,第一个元素是长度,第二个元素是高度。

get_display_snapshot

::mfp::graph_lib::display::get_display_snapshot(4) :

get_display_snapshot(display, update_screen_or_not, width_ratio, height_ratio)返回一个display(既可以是screen display,也可以是image display)的截屏。它的第二个参数,update_screen_or_not,告诉MFP在截屏之前该display是否需要刷新;它的第三个和第四个参数,是可选参数,缺省值均为1,分别用于告诉MFP返回的截屏的长度和高度的缩放比例。比如,get_display_snapshot(d, true, 0.5, 3)首先刷新屏幕d,然后截取d的图像,最后将截取的图像长度上压缩为原来的一半,高度上拉伸为原来的三倍并返回新的图像。

get_eigen_values

::mfp::math::matrix::get_eigen_values(1) :

get_eigen_values(A)计算2维方阵A的特征值。这个函数返回所有特征值,包括重复的特征值的列表。注意运算这个函数非常耗费内存和CPU资源,如果在手机上运行,矩阵A的尺寸最好不要超过6*6,如果在电脑上运行,最好不要超过8*8,否则可能造成内存不足而程序崩溃或者运行很长时间而没有结果。

::mfp::math::matrix::get_eigen_values(2) :

get_eigen_values(A, B)计算2维方阵A相对于同样尺寸的方阵B的特征值,也就是Av = lambda * Bv,在这里,。lambda是一个特征值,v是一个特征向量。第二个参数,B,可以省略,其缺省值为I矩阵。这个函数返回所有特征值,包括重复的特征值的列表。注意运算这个函数非常耗费内存和CPU资源,如果在手机上运行,矩阵A的尺寸最好不要超过6*6,如果在电脑上运行,最好不要超过8*8,否则可能造成内存不足而程序崩溃或者运行很长时间而没有结果。

get_elem_from_ablist

::mfp::data_struct::array_based::get_elem_from_ablist(2) :

get_elem_from_ablist(array_based_list, idx)返回基于数组的序列array_based_list在idx处的值的引用。如果idx不合法,一个异常将会被抛出。

get_event_info

::mfp::graph_lib::event::get_event_info(2) :

get_event_info(event, property_name)返回event事件的一个特性。它的第一个参数是事件,第二个参数是基于字符串的特性的名字。GDI_INITIALIZE和GDI_CLOSE事件没有单独的特性。WINDOW_RESIZED事件有四个整数特性,它们是"width","height","last_width","last_height"。它们分别表示当前窗口的宽度和高度,以及事件触发前窗口的宽度和高度。POINT_DOWN,POINT_UP和POINT_CLICKED事件均有三个特性。其中,"button"特性是一个整数,表示鼠标的哪一个键触发了这个事件。注意在安卓平台上,"button"特性总是0。"x"和"y"表示事件触发时的坐标位子,它们均为浮点数。POINT_DRAGGED和POINT_SLICED事件均有5个特性。其中,"button"特性是一个整数,表示鼠标的哪一个键触发了这个事件。注意在安卓平台上,"button"特性总是0。"last_x"和"last_y"表示事件触发前的坐标位子,它们均为浮点数。"x"和"y"表示事件触发后的坐标位子,它们均为浮点数。POINTER_PINCHED事件有八个特性,它们是"last_x"、"last_y"、"last_x2"、"last_y2"、"x"、"y"、"x2"以及"y2"。这些特性定义了参与POINTER_PINCHED事件的两根手指头在事件触发前和事件触发后的坐标位置。这些特性均为浮点数。

get_event_type

::mfp::graph_lib::event::get_event_type(1) :

get_event_type(event)返回一个整数,表示事件event的类型。在现阶段支持以下事件:GDI_INITIALIZE(类型为1,产生于screen display被创建的时候),GDI_CLOSE(类型为10,产生于screen display被关闭的时候),WINDOW_RESIZED(仅仅用于JAVA平台,类型为21,产生于screen display的窗口大小被调整的时候),POINTER_DOWN(类型为102,产生于鼠标按钮被按下或者用户手指点到触摸屏的时候),POINTER_UP(类型为103,产生于鼠标按钮弹起或者用户手指离开触摸屏的时候),POINTER_CLICKED(类型为104,产生于鼠标按钮快速按下再立即弹起或者用户手指轻敲触摸屏的时候),POINTER_DRAGGED(类型为105,产生于鼠标或者用户手指按下并拖动的时候。注意只要拖动还在进行中,这个事件就会连续地触发),POINTER_SLIDED(类型为106,产生于鼠标或者用户手指按下并拖动到终点,鼠标按钮弹起或者用户手指离开触摸屏的时候,注意这个事件只是在拖动事件结束的时候触发一次),POINTER_PINCHED(仅用于安卓平台,类型为201,当用户捏合手指进行类似缩放操作的时候触发)。

get_event_type_name

::mfp::graph_lib::event::get_event_type_name(1) :

get_event_type_name(event)返回一个字符串,表示事件event的类型的名字。在现阶段支持以下事件:"GDI_INITIALIZE"(产生于screen display被创建的时候),"GDI_CLOSE"(产生于screen display被关闭的时候),"WINDOW_RESIZED"(仅仅用于JAVA平台,产生于screen display的窗口大小被调整的时候),"POINTER_DOWN"(产生于鼠标按钮被按下或者用户手指点到触摸屏的时候),"POINTER_UP"(产生于鼠标按钮弹起或者用户手指离开触摸屏的时候),"POINTER_CLICKED"(产生于鼠标按钮快速按下再立即弹起或者用户手指轻敲触摸屏的时候),"POINTER_DRAGGED"(产生于鼠标或者用户手指按下并拖动的时候。注意只要拖动还在进行中,这个事件就会连续地触发),"POINTER_SLIDED"(产生于鼠标或者用户手指按下并拖动到终点,鼠标按钮弹起或者用户手指离开触摸屏的时候,注意这个事件只是在拖动事件结束的时候触发一次),"POINTER_PINCHED"(仅用于安卓平台,当用户捏合手指进行类似缩放操作的时候触发)。

get_extreme_elem

::mfp::array::get_extreme_elem(3) :

函数get_extreme_elem分析输入的数值矩阵并返回其所有元素的最大或最小值。如果某一个元素不是实数,这个元素就会被忽略。这个函数有3个参数,第一个是数值矩阵(也可以是一个单一的数值),第二个是起始的最大或者最小值,如果这个参数不是null并且是一个实数,本函数将该参数和选出的最大或最小元素进行比较,并返回新的最大或最小值。第三个参数是告诉本函数返回最大值还是最小值,如果是0则返回最小值,否则返回最大值。函数的例子包括get_extreme_elem([[2, 3], "hello", 5], null, 1)和get_extreme_elem([[3,4,6],[5+3i, 7, 9.88-4.61], [5.77 -0.03i]], -8, 0)。

get_file_last_modified_time

::mfp::io::file::get_file_last_modified_time(1) :

get_file_last_modified_time(path)返回基于字符串路径的path的文件或目录的上一次更改时间。该时间等于从1970年1月1日午夜开始到上一次更改时刻所经历的毫秒数。如果path不存在或者没有访问权限,返回-1。

get_file_path

::mfp::io::file::get_file_path(1) :

get_file_path(fd)返回文件号fd(fd是一个整数)所对应的文件的路径字符串。

get_file_separator

::mfp::io::file::get_file_separator(0) :

get_file_separator()返回路径分割符。在Windows平台下返回字符串"\\",在Linux和Android平台下返回字符串"/"。

get_file_size

::mfp::io::file::get_file_size(1) :

get_file_size(path)返回基于字符串路径的path的文件大小。如果path不是对应一个文件或者没有权限或者不存在,返回-1。

get_func_fullname

::mfp::reflection::get_func_fullname(3) :

get_func_fullname(function_name, number_of_params, citing_spaces_to_check)返回一个函数的全名(也就是引用空间加函数名)。它有三个参数。第一个参数是一个基于字符串的函数名,这个函数名可以包含部分或者不包含引用空间。第二个参数是参数的个数。这是一个可选参数,它的缺省值是-1,意思是仅仅搜索比较函数名,不考虑参数个数。第三个参数是将要检视的引用空间列表。这是一个基于数组的一维矩阵,比如["::mfp_compiler", "::mfp::*"]。在这个例子中,本函数将会首先搜索引用空间::mfp_compiler,然后搜索引用空间::mfp以及::mfp的所有子空间。这个参数也是可省略的。它的缺省值就是当前上下文所使用的引用空间。如果get_func_fullname需要寻找的函数在给出的引用空间中没有找到,本函数将会抛出异常。一个函数的例子为get_func_fullname("reflection:: get_func_fullname", 2)。这个例子的返回值为"::mfp::reflection::get_func_fullname"。注意这里参数的个数用的是2而不是3但依然合法,原因是get_func_fullname有两个缺省参数,所以参数个数可以是1或者2或者3。

get_functions

::mfp_compiler::annotation::compulsory_link::get_functions(0...) :

get_functions(...) 是一个用于编译的函数,也就是说它在打包脚本生成MFP应用时发挥作用。本函数返回一个数组,其中包括所有的出现在参数中的MFP函数的引用信息。

get_hour

::mfp::time_date::get_hour(1) :

get_year(timestamp),get_month(timestamp),get_day_of_year(timestamp),get_day_of_month(timestamp),get_day_of_week(timestamp),get_hour(timestamp),get_minute(timestamp),get_second(timestamp)和get_millisecond(timestamp) 分别返回时标timestamp所对应的年,月,本年中的第几天,本月中的第几天,本星期中的第几天(礼拜天是第0天,礼拜一是第一天,...),小时,分钟,秒钟和毫秒。时标是时标所表示的时刻和1970年1月1日午夜(UTC)的毫秒数时间差。例如,get_day_of_week(get_time_stamp(2014, 12, 21))返回0,表示2014年12月21日是礼拜天。

get_image_size

::mfp::multimedia::image_lib::get_image_size(1) :

get_image_size(image_handle)返回由image_handle所代表的被包装过的JAVA图像对象的长和宽组成的数组。

get_incoming_connect

::mfp::paracomp::connect::get_incoming_connect(2) :

get_incoming_connect函数返回一个从远端地址连入一个本地网络界面的网络连接对象,或者如果没有这样一个网络连接存在则返回null。这个函数接受两个参数。第一个参数为一个代表本地网络界面信息的对象。 该对象为generate_interface函数的返回值。第二个参数是远端,也就是网络连接发起端(或者说客户端)的地址。注意对于TCPIP协议,客户端的地址必须是包括IP地址和端口的完整地址。此外,如果在远端和本地之间存在NAT层,客户端地址必须是在本地看到的远端地址,也就是客户端在NAT层外侧的地址。本函数的一个例子是get_incoming_connect(local_interface, "192.168.1.100:53521")。

get_json_field

::mfp::exdata::json::get_json_field(3) :

此函数从一个代表JSON数据的字符串中获取一个域的值。此函数有三个参数。第一个参数为一个代表JSON数据的字符串,第二个参数为JSON域的名字,第三个参数为JSON域的类型。如果第三个参数值为"s",则意味着这个JSON域是一个字符串,如果是"b",则意味着这个JSON域是一个布尔值,如果是"f",则意味着这个JSON域是一个浮点数值,如果是"d",则意味着这个JSON域是一个整数值,如果是"a",则意味着这个JSON域是一个数组,如果是"j",则意味着这个JSON域是一个代表JSON数据的字符串,如果是其他值或者这个参数被省略,则由MFP自己侦测这个JSON域的数据类型。注意第一个参数和第二个参数都是区分大小写的,但第三个参数不区分大小写。这个函数的返回值是这个JSON域的数据值。本函数的一个例子是get_json_field("{\"ABC\": null, \"JJJ\": {\"DEF\":[1, 8, [\"Welcome\", 9.99]],\"ZZ\":\"hello boy\"}}", "JJJ", "j")。

get_local_host_address

::mfp::paracomp::host::get_local_host_address(1) :

get_local_host_address(protocol_name)返回protocol_name协议在本机的localhost地址。本函数的一个例子是get_local_host_address("TCPIP")。

get_millisecond

::mfp::time_date::get_millisecond(1) :

get_year(timestamp),get_month(timestamp),get_day_of_year(timestamp),get_day_of_month(timestamp),get_day_of_week(timestamp),get_hour(timestamp),get_minute(timestamp),get_second(timestamp)和get_millisecond(timestamp) 分别返回时标timestamp所对应的年,月,本年中的第几天,本月中的第几天,本星期中的第几天(礼拜天是第0天,礼拜一是第一天,...),小时,分钟,秒钟和毫秒。时标是时标所表示的时刻和1970年1月1日午夜(UTC)的毫秒数时间差。例如,get_day_of_week(get_time_stamp(2014, 12, 21))返回0,表示2014年12月21日是礼拜天。

get_minute

::mfp::time_date::get_minute(1) :

get_year(timestamp),get_month(timestamp),get_day_of_year(timestamp),get_day_of_month(timestamp),get_day_of_week(timestamp),get_hour(timestamp),get_minute(timestamp),get_second(timestamp)和get_millisecond(timestamp) 分别返回时标timestamp所对应的年,月,本年中的第几天,本月中的第几天,本星期中的第几天(礼拜天是第0天,礼拜一是第一天,...),小时,分钟,秒钟和毫秒。时标是时标所表示的时刻和1970年1月1日午夜(UTC)的毫秒数时间差。例如,get_day_of_week(get_time_stamp(2014, 12, 21))返回0,表示2014年12月21日是礼拜天。

get_month

::mfp::time_date::get_month(1) :

get_year(timestamp),get_month(timestamp),get_day_of_year(timestamp),get_day_of_month(timestamp),get_day_of_week(timestamp),get_hour(timestamp),get_minute(timestamp),get_second(timestamp)和get_millisecond(timestamp) 分别返回时标timestamp所对应的年,月,本年中的第几天,本月中的第几天,本星期中的第几天(礼拜天是第0天,礼拜一是第一天,...),小时,分钟,秒钟和毫秒。时标是时标所表示的时刻和1970年1月1日午夜(UTC)的毫秒数时间差。例如,get_day_of_week(get_time_stamp(2014, 12, 21))返回0,表示2014年12月21日是礼拜天。

get_num_of_results_sets

::mfp::math::polynomial::get_num_of_results_sets(1) :

get_num_of_results_sets(x)返回solve程序块返回值x中所包含的解集的组数。

get_porterduff_mode

::mfp::graph_lib::draw::get_porterduff_mode(1) :

get_porterduff_mode(painting_extra)返回一个painting extra数据结构的porterduff模式。painting extra数据结构在painting事件中被调用。Porterduff模式告诉MFP如何绘制目标区域。它是一个大写的字符串,具有以下可能值:"CLEAR","SRC","DST","SRC_OVER","DST_OVER","SRC_IN","DST_IN","SRC_OUT","DST_OUT","SRC_ATOP","DST_ATOP","XOR"或者"",其中,空字符串""是缺省值。开发者可以参考JAVA文档以获取porterduff模式的详细信息。

get_rtc_video_output_count

::mfp::multimedia::webrtc_lib::get_rtc_video_output_count(1) :

本函数返回一个显示窗口上的RTC视频子窗口的个数。本函数仅有一个参数就是显示窗口的句柄。该句柄是open_screen_display函数的返回值。

get_rtc_video_output_lefttop

::mfp::multimedia::webrtc_lib::get_rtc_video_output_lefttop(2) :

本函数返回一个包含两个元素的数组。第一个元素是一个RTC视频输出子窗口的左上角的x坐标。第二个元素是该RTC视频输出子窗口的左上角的y坐标。这个函数有两个参数。第一个参数是一个显示窗口的句柄。该句柄是open_screen_display函数的返回值。第二个参数是该RTC视频输出子窗口在显示窗口的RTC视频输出子窗口序列中的索引。第一个RTC视频输出子窗口的索引是0,第二个RTC视频输出子窗口的索引是1,以此类推。

get_sandbox_session_lib_path

::mfp::platform_hardware::platform_info::get_sandbox_session_lib_path(0) :

函数get_sandbox_session_lib_path返回一个基于字符串的路径,该路径是当前沙盒的用户代码库的所在目录。沙盒是在服务端运行的一个线程。这个线程在服务端收到一个客户端的call指令后启动。这个客户端是一个独立于服务端的进程,它可能位于本机,也可能位于另外一台电脑。该线程拥有独立于服务端其它线程的MFP用户代码库,资源和栈。它的用户代码库,资源和栈是拷贝自发送call指令的客户端。这个函数没有参数。如果当前运行的代码不是位于沙盒中(比如,当前代码是在常规的命令提示符下运行),这个函数返回NULL 。

get_sandbox_session_resource_path

::mfp::platform_hardware::platform_info::get_sandbox_session_resource_path(0) :

函数get_sandbox_session_resource_path返回一个基于字符串的路径,该路径是当前沙盒的资源文件(比如图像文件,声音文件和数据库文件)的所在目录。沙盒是在服务端运行的一个线程。这个线程在服务端收到一个客户端的call指令后启动。这个客户端是一个独立于服务端的进程,它可能位于本机,也可能位于另外一台电脑。该线程拥有独立于服务端其它线程的MFP用户代码库,资源和栈。它的用户代码库,资源和栈是拷贝自发送call指令的客户端。这个函数没有参数。如果当前运行的代码不是位于沙盒中(比如,当前代码是在常规的命令提示符下运行),这个函数返回NULL 。

get_second

::mfp::time_date::get_second(1) :

get_year(timestamp),get_month(timestamp),get_day_of_year(timestamp),get_day_of_month(timestamp),get_day_of_week(timestamp),get_hour(timestamp),get_minute(timestamp),get_second(timestamp)和get_millisecond(timestamp) 分别返回时标timestamp所对应的年,月,本年中的第几天,本月中的第几天,本星期中的第几天(礼拜天是第0天,礼拜一是第一天,...),小时,分钟,秒钟和毫秒。时标是时标所表示的时刻和1970年1月1日午夜(UTC)的毫秒数时间差。例如,get_day_of_week(get_time_stamp(2014, 12, 21))返回0,表示2014年12月21日是礼拜天。

get_solved_results_set

::mfp::math::polynomial::get_solved_results_set(2) :

get_solved_results_set(x, y)返回solve程序块返回值x中所包含的第y+1组解集。注意本函数返回一个一维数组,数组中的第一个元素是solve程序块的第一个待解变量的值,第二个元素是solve程序块的第二个待解变量的值,依次类推。

get_sound_path

::mfp::multimedia::audio_lib::get_sound_path(1) :

get_sound_path(sound_handle)返回sound_handle所指向的声音文件的路径。

get_sound_reference_path

::mfp::multimedia::audio_lib::get_sound_reference_path(1) :

get_sound_reference_path(sound_handle)返回sound_handle所指向的声音引用文件的路径。如果声音文件不是从zip压缩的读入的,声音引用文件和sound_handle所指向的声音文件(也就是get_sound_file函数的返回值)是同一个文件。如果声音文件是从zip压缩的读入的,声音引用文件路径是压缩文件的路径加上声音文件的压缩路径,比如"/folder1/folder2/snd.zip/zipped_folder/snd.wav",这里"/folder1/folder2/snd.zip"是压缩文件路径,"zipped_folder/snd.wav"是声音文件的压缩路径。

get_sound_repeat

::mfp::multimedia::audio_lib::get_sound_repeat(1) :

get_sound_repeat(sound_handle)返回一个布尔量,表示参数sound_handle所代表的声音是否会被重复演奏。

get_sound_source_type

::mfp::multimedia::audio_lib::get_sound_source_type(1) :

get_sound_source_type(sound_handle)返回一个整数,代表sound_handle所指向的声音引用文件的类型。0表示常规文件,1表示压缩的zip文件,2表示引用于MFP App中安卓asset中的zip文件。

get_sound_volume

::mfp::multimedia::audio_lib::get_sound_volume(1) :

get_sound_volume(sound_handle)返回参数sound_handle所代表的声音的音量(一个变化范围从0到1的浮点数)。

get_src_file_path

::mfp::io::file::get_src_file_path(0) :

这个函数返回当前脚本的完整路径。当前脚本是调用get_src_file_path的脚本。如果本函数在命令提示符中被调用,则返回null。

get_time_stamp

::mfp::time_date::get_time_stamp(1...) :

get_time_stamp(string_or_year, ...)返回由其参数所决定的时标。时标是时标所表示的时刻和1970年1月1日午夜(UTC)的毫秒数时间差。这个函数有两种工作模式。第一种模式是get_time_stamp(string_time_stamp)。这种模式仅仅接受一个字符串参数,该参数必须基于yyyy-mm-dd hh:mm:ss[.f...]的格式。其中,秒的分数部分可以忽略。第二种模式是get_time_stamp(year, month, day, hour, minute, second, millisecond)。这些参数中,除了第一个参数year(年),所有的其他参数都可以省略。如果省略,month(月)和day(日)的缺省值是1,hour(小时),minute(分钟),second(秒)和millisecond(毫秒)的缺省值是0。比如get_time_stamp("1981-05-30 17:05:06")返回1981年5月30日17点5分6秒0毫秒的时标,用户也可以调用get_time_stamp(1981, 5, 30, 17, 5, 6, 0)获得同样的结果。

get_type_fullname

::mfp::reflection::get_type_fullname(1) :

get_type_fullname返回参数类型的全名,即带有引用空间路径的名称。例如,如果开发人员在引用空间::abc::def中定义了一个类A,并且已经从类A创建了一个名为objA的对象,则get_type_fullname(objA)将返回一个字符串,该字符串为::abc::def::a。请注意,由于MFP不区分大小写,并且内部所有变量名称和类型都转换为小写字母,所以A更改为a。另请注意,此函数可以返回MFP内置类型的全名。但是,建议用户仅在程序运行期间使用它来识别两个变量是否具有相同的类型。用户不能假定MFP内置类型的全名在以后的版本中永远不会更改。

get_upper_level_path

::mfp::io::file::get_upper_level_path(1) :

本函数返回参数字符串的上层目录(也是一个字符串)。比如,get_upper_level_path("abc/def")和get_upper_level_path("abc/def/")在安卓上都返回"abc/"。但是,要注意如果上层目录是非法目录,它返回null。比如get_upper_level_path("")和get_upper_level_path("/")均返回null。原因是""和"/"的上层目录均不存在。

get_value_from_abdict

::mfp::data_struct::array_based::get_value_from_abdict(2) :

get_value_from_abdict(array_based_dictionary, key)返回基于数组的字典array_based_dictionary的key所对应的值的引用。如果key不存在,一个异常将会被抛出。注意key只能是字符串。

get_variable_results

::mfp::math::polynomial::get_variable_results(2) :

get_variable_results(x, y)返回solve程序块返回值x中该solve程序块第y+1个待解变量的所有值。注意本函数返回一个一维数组,数组中的每一个元素是该待解变量的一个根。

get_video_track_enable

::mfp::multimedia::webrtc_lib::get_video_track_enable(1) :

本函数测试视频功能是否已经被激活。如果是,返回True,否则返回False。这个函数仅有一个参数,就是一个显示窗口的句柄。该句柄是open_screen_display函数的返回值。

get_working_dir

::mfp::io::file::get_working_dir(0) :

get_working_dir()(别名pwd())返回基于字符串的当前路径。

get_year

::mfp::time_date::get_year(1) :

get_year(timestamp),get_month(timestamp),get_day_of_year(timestamp),get_day_of_month(timestamp),get_day_of_week(timestamp),get_hour(timestamp),get_minute(timestamp),get_second(timestamp)和get_millisecond(timestamp) 分别返回时标timestamp所对应的年,月,本年中的第几天,本月中的第几天,本星期中的第几天(礼拜天是第0天,礼拜一是第一天,...),小时,分钟,秒钟和毫秒。时标是时标所表示的时刻和1970年1月1日午夜(UTC)的毫秒数时间差。例如,get_day_of_week(get_time_stamp(2014, 12, 21))返回0,表示2014年12月21日是礼拜天。

hash_code

::mfp::object::hash_code(1) :

hash_code函数返回它唯一一个参数的hash值。

havg

::mfp::math::stat_stoch::havg(0...) :

函数havg(…)返回任意个数参数的调和平均数值。

iff

::mfp::command::iff(3...) :

函数iff(condition1, true_result1, condition2, true_result2, ..., false_result)的参数condition1,condition2,...为代表条件的布尔值,iff函数的返回值由条件值决定。比如,iff(true, 3, 2)返回3,iff(3<2, 3, 2)返回2(这是因为3<2是false),iff(3<2, 3, 5>4, 5, 6==9, 6, 9)返回5,以及iff(3<2, 3, 5<4, 5, 6==9, 6, 9)返回9。

ifft

::mfp::sig_proc::ifft(1...) :

IFFT(a, ...)返回对一个数值向量作快速傅立叶变换的逆变换后的值。注意数值向量中数值的个数必须是2的整数次方。如果参数a是一个数值序列,则本函数只可能拥有一个参数,返回值为对序列a[0], a[1], ..., a[N-1]作快速傅立叶变换德逆变换的返回值。如果参数a仅仅是一个实数或者虚数,则本函数最少包含2个参数,而返回序列a, optional_params[0], ..., optional_params[number_of_optional_params - 2], optional_params[number_of_optional_params - 1]快速傅立叶变换的逆变换后的值。注意返回值总是一个数组。

函数例子:

IFFT(10, -2 + 2i, -2, -2 - 2i)返回[1, 2, 3, 4];

IFFT([10, -2 + 2i, -2, -2 - 2i])同样也是返回[1, 2, 3, 4];

image

::mfp::math::complex::image(1) :

image(x)返回复数x的虚部的实数值。

::mfp::math::complex::image(2) :

image(x, mode)返回复数x的虚部。如果参数mode是true,则返回虚数值,否则返回实数值。比如image(3+2i, true) = 2i而image(3+2i, false) = 2。

includes_inf

::mfp::array::includes_inf(1) :

includes_inf(x)用于判断参数x是否包含正负无穷。这里,包含指的是,如果x是个数组,那么它的某一个元素包含或者本身就是目标值,如果x是一个复数,那么它的实部或者虚部是目标值,如果x是一个实数,那么它就是目标值。如果是,返回true,否则,返回false。

includes_nan

::mfp::array::includes_nan(1) :

includes_nan(x)用于判断参数x是否包含Nan。这里,包含指的是,如果x是个数组,那么它的某一个元素包含或者本身就是目标值,如果x是一个复数,那么它的实部或者虚部是目标值,如果x是一个实数,那么它就是目标值。如果是,返回true,否则,返回false。

includes_nan_or_inf

::mfp::array::includes_nan_or_inf(1) :

includes_nan_or_inf(x)用于判断参数x是否包含Nan或者正负无穷。这里,包含指的是,如果x是个数组,那么它的某一个元素包含或者本身就是目标值,如果x是一个复数,那么它的实部或者虚部是目标值,如果x是一个实数,那么它就是目标值。如果是,返回true,否则,返回false。

includes_nan_or_inf_or_null

::mfp::array::includes_nan_or_inf_or_null(1) :

includes_nan_or_inf_or_null(x)用于判断参数x是否包含Nan或者正负无穷或者null。这里,包含指的是,如果x是个数组,那么它的某一个元素包含或者本身就是目标值,如果x是一个复数,那么它的实部或者虚部是目标值,如果x是一个实数,那么它就是目标值。如果是,返回true,否则,返回false。

includes_null

::mfp::array::includes_null(1) :

includes_null(x)用于判断参数x是否包含null。这里,包含指的是,如果x是个数组,那么它的某一个元素包含或者本身就是目标值,如果x是一个复数,那么它的实部或者虚部是目标值,如果x是一个实数,那么它就是目标值。如果是,返回true,否则,返回false。

initialize_local

::mfp::paracomp::connect::initialize_local(2) :

initialize_local(local_info, settings)初始化一个本地interface对象。该对象由local_info定义(local_info是调用generate_interface的返回结果)。这个函数的第二个参数是本地网络界面的设置。这个参数现在还没有被使用,所以可以省略。本函数如果成功返回true,否则返回false。

initialize_rtc_mmedia

::mfp::multimedia::webrtc_lib::initialize_rtc_mmedia(0) :

本函数用于初始化web RTC库。注意此处的web RTC是指的用于支持声音和视频通信的web RTC函数库,而不是用于支持数据通信的WEBRTC协议栈。如果初始化成功,函数返回True,否则返回False。

input

::mfp::io::console::input(3) :

input(prompt,input_type,default_value)在命令控制台上打印出基于字符串的提示符prompt并等待用户输入。第二个参数input_type,以及第三个参数default_value,都是可选参数。在现阶段,如果第二个参数存在,并且它值是字符串"s"或者"S",用户的输入将会被当作一个字符串并且函数将会返回这个字符串。如果第二个和第三个参数均存在,并且第二个参数是"default"或者"DEFAULT",第三个参数将会作为缺省值。这个缺省值将在用户直接输入回车或者空格再回车的时候被函数作为返回值。除了前述这两种情况,本函数将把用户的输入看作是一个表达式,表达式的值作为返回值返回。如果用户输入不是一个合法的表达式,本函数会重新打印提示符要求用户再次输入。用户的一次输入由ENTER键结束。如果用户输入了多行,仅仅第一行会被读取。比如,用户运行input("$", "S"),然后在提示符后输入4 + 3,再按回车,这个函数返回一个字符串"4 + 3",如果用户运行input("%"),然后再提示符后输入4 + 3,再按回车,这个函数返回7。如果用户运行input("#", "default", "e"),然后再提示符后输入空格并回车,本函数返回字符串"e"。

insert_elem_into_ablist

::mfp::data_struct::array_based::insert_elem_into_ablist(3) :

insert_elem_into_ablist(array_based_list, idx, ref_of_elem)将ref_of_elem的引用插入基于数组的序列array_based_list的idx号元素之前并返回更新后的基于数组的序列。作为参数的array_based_list和返回值共享元素。注意idx必须是一个合法的索引。

integrate

::mfp::math::calculus::integrate(2) :

integrate(x,y)返回基于变量y的表达式x的不定积分,表达式x和变量y均为字符串。注意如果表达式x不存在不定积分,或者x过于复杂无法解出其不定积分,本函数将会抛出异常。

::mfp::math::calculus::integrate(4) :

integrate(x,y,z,w)返回表达式x在变量y从z到w的积分值。表达式x和变量y均为字符串,z和w可以为实数,复数或字符串。注意本函数采用的积分算法是自适应Gauss-Kronrod积分法。

::mfp::math::calculus::integrate(5) :

integrate(x,y,z,w,v)返回表达式x相对于变量y从w到z的积分。计算时每一步步长为(w-z)/v。表达式x和变量y均为字符串,z和w可以为实数,复数或字符串,v必须为正整数。注意如果v是0,则相当于执行integrate(x,y,z,w)。

invert

::mfp::math::matrix::invert(1) :

invert(x)返回方块2维矩阵x的逆矩阵,注意x中的元素可以为复数。

is_directory

::mfp::io::file::is_directory(1) :

is_directory(path)用于判断位于字符串path的文件(或者目录)是否是一个目录。如果该文件或目录存在并且是一个目录返回true,否则返回false。例子包括is_directory("E:\\") (Windows)和is_directory("/home/tony/Documents/cv.pdf") (Android)。

is_display_on_live

::mfp::graph_lib::display::is_display_on_live(1) :

is_display_on_live(display)函数返回布尔值,表示参数display是否依然有效。display既可以是screen display,也可以是image display。

is_eye

::mfp::math::matrix::is_eye(2) :

is_eye(x,y)用于确定数组(或数)x是否是单位阵I(或数字1),如果是,返回true,否则返回false。参数y是布尔量,可以省略,缺省值为false。如果y是true,将所有的null值视为0,否则,null值不被当作0。

is_file_executable

::mfp::io::file::is_file_executable(1) :

is_file_executable(path)用于判断位于字符串path的文件(或者目录)是否可执行。如果该文件或目录存在并且可执行返回true,否则返回false。例子包括is_file_executable("E:\\") (Windows)和is_file_executable("/home/tony/Documents/cv.pdf") (Android)。

is_file_existing

::mfp::io::file::is_file_existing(1) :

is_file_existing(path)用于判断位于字符串path的文件(或者目录)是否存在。如果存在返回true,否则返回false。例子包括is_file_existing("E:\\") (Windows)和is_file_existing("/home/tony/Documents/cv.pdf") (Android)。

is_file_hidden

::mfp::io::file::is_file_hidden(1) :

is_file_hidden(path)用于判断位于字符串path的文件(或者目录)是否隐藏。如果该文件或目录存在并且隐藏返回true,否则返回false。例子包括is_file_hidden("E:\\") (Windows)和is_file_hidden("/home/tony/Documents/cv.pdf") (Android)。

is_file_normal

::mfp::io::file::is_file_normal(1) :

is_file_normal(path)用于判断位于字符串path的文件(或者目录)是否是一个常规文件而不是目录。如果该文件或目录存在并且是一个常规文件而不是目录返回true,否则返回false。例子包括is_file_normal("E:\\") (Windows)和is_file_normal("/home/tony/Documents/cv.pdf") (Android)。

is_file_readable

::mfp::io::file::is_file_readable(1) :

is_file_readable(path)用于判断位于字符串path的文件(或者目录)是否可读。如果该文件或目录存在并且可读返回true,否则返回false。例子包括is_file_readable("E:\\") (Windows)和is_file_readable("/home/tony/Documents/cv.pdf") (Android)。

is_file_writable

::mfp::io::file::is_file_writable(1) :

is_file_writable(path)用于判断位于字符串path的文件(或者目录)是否可写。如果该文件或目录存在并且可写返回true,否则返回false。例子包括is_file_writable("E:\\") (Windows)和is_file_writable("/home/tony/Documents/cv.pdf") (Android)。

is_inf

::mfp::math::number::is_inf(1) :

is_inf(x)用于判断参数x是否为正负无穷。如果是,返回true,否则,返回false。

is_mfp_app

::mfp::platform_hardware::platform_info::is_mfp_app(0) :

is_running_on_android()告诉开发人员脚本是否在MFP应用中运行,如果是,返回true,如果不是,返回false。

is_nan_or_inf

::mfp::math::number::is_nan_or_inf(1) :

is_nan_or_inf(x)用于判断参数x是否为Nan或者正负无穷。如果是,返回true,否则,返回false。

is_nan_or_inf_or_null

::mfp::math::number::is_nan_or_inf_or_null(1) :

is_nan_or_inf_or_null(x)用于判断参数x是否为Nan或者正负无穷或者null。如果是,返回true,否则,返回false。

is_path_absolute

::mfp::io::file::is_path_absolute(1) :

is_path_absolute(path)用于判断位于字符串path是否是一个绝对路径(也就是不是相对于当前目录的路径)。如果是返回true,否则返回false。例子包括is_path_absolute("E:\\temp") (Windows)和is_path_absolute("Documents/cv.pdf") (Android)。

is_path_parent

::mfp::io::file::is_path_parent(2) :

is_path_parent(path1, path2)用于判断位于字符串path1是否是字符串path2的上级目录。如果是返回true,否则返回false。例子包括is_path_parent("E:\\temp", "E:\\temp\\..\\temp\\test") (Windows)和is_path_parent(".", "Documents/cv.pdf") (Android)。

is_path_same

::mfp::io::file::is_path_same(2) :

is_path_same(path1, path2)用于判断位于字符串path1是否和字符串path2指向同一条路径。如果是返回true,否则返回false。例子包括is_path_same("E:\\temp", "E:\\temp\\..\\temp\\") (Windows)和is_path_parent("/home/tony/Documents", "Documents/") (Android)。

is_playing

::mfp::multimedia::audio_lib::is_playing(1) :

这个函数接受一个媒体播放器句柄作为参数。如果该媒体播放器正在播放音乐,这个函数返回true,如果该媒体播放器没有正在播放,或者该句柄无效,这个函数返回false。

is_prime

::mfp::math::number::is_prime(1) :

函数Is_Prime(x)用于测定正整数x(>=2)是否为素数。如果x不是大于等于二的正整数,则返回false。

is_running_on_android

::mfp::platform_hardware::platform_info::is_running_on_android(0) :

is_running_on_android()告诉开发人员脚本是否在安卓平台上运行,如果是,返回true,如果不是,而是在普通的JAVA平台上运行,返回false。

is_sandbox_session

::mfp::platform_hardware::platform_info::is_sandbox_session(0) :

函数is_sandbox_session告诉开发者当前的MFP代码是否运行在一个沙盒中。沙盒是在服务端运行的一个线程。这个线程在服务端收到一个客户端的call指令后启动。这个客户端是一个独立于服务端的进程,它可能位于本机,也可能位于另外一台电脑。该线程拥有独立于服务端其它线程的MFP用户代码库,资源和栈。它的用户代码库,资源和栈是拷贝自发送call指令的客户端。这个函数没有参数,如果当前代码位于一个沙盒中它返回True,否则返回False 。

is_symbol_link

::mfp::io::file::is_symbol_link(1) :

is_symbol_link(path)用于判断位于字符串path的文件(或者目录)是否是一个符号链接。如果该文件或目录存在并且是一个符号链接返回true,否则返回false。例子包括is_symbol_link("E:\\") (Windows)和is_symbol_link("/home/tony/Documents/cv.pdf") (Android)。

is_valid_image_handle

::mfp::multimedia::image_lib::is_valid_image_handle(1) :

is_valid_image_handle(image_handle)返回一个布尔量,用于告诉开发人员一个被包装过的JAVA图像对象,也就是image_handle参数,是否依然合法还是已经被关闭。

is_zeros

::mfp::math::matrix::is_zeros(2) :

is_zeros(x,y)用于确定数组(或数)x是否是零矩阵(或数字0),如果是,返回true,否则返回false。参数y是布尔量,可以省略,缺省值为false。如果y是true,将所有的null值视为0,否则,null值不被当作0。

left_recip

::mfp::math::matrix::left_recip(1) :

left_recip(x)计算x的左除倒数,注意当前仅支持数值或二维矩阵。

lg

::mfp::math::log_exp::lg(1) :

函数lg(x)返回x的自然对数。

lim

::mfp::math::calculus::lim(3) :

lim(expr, var, dest_value)用于计算表达式expr在变量var趋近于dest_value时的值。expr和var必须为字符串,dest_value为表达式或者数值,可以基于字符串,也可以不基于字符串。比如,lim("1/x", "x", 0)或者lim("(x+2)/(x+3)","x","3+0")。注意这个函数还在开发中。

link_video_stream

::mfp::multimedia::webrtc_lib::link_video_stream(4) :

此函数将web RTC视频流链接到一个RTC视频输出窗口。它有四个参数。第一个是显示窗口句柄,该句柄可以从open_screen_display函数调用中返回。第二个是peer connection对象的Id。第三个是视频流轨的ID。最后一个是RTC视频输出子窗口在显示窗口的RTC视频输出子窗口序列中的索引。此函数不会返回任何值。如果任何参数无效,或者无法将视频流链接到视频输出窗口,本函数会抛出一个异常。

list_files

::mfp::io::file::list_files(1) :

list_files(path)返回位于字符串path路径的目录中的所有子文件或者子目录的名字,或者如果path路径对应的是一个文件,它返回该文件的文件名。如果不存在一个文件或者目录对应于path路径,它返回NULL。注意参数path是可以省略的。它的缺省值是当前目录。例子包括list_files("c:\\temp\\try1") (Windows)和list_files("../testfile_copy.txt") (Android)。

listen

::mfp::paracomp::connect::listen(1) :

listen(local_info)在一个本地interface对象上侦听外部的连接请求。参数local_info是调用generate_interface函数的返回值。listen如果成功,返回true,否则返回false。

ln

::mfp::math::log_exp::ln(1) :

函数ln(x)返回x的自然对数。

load_image

::mfp::multimedia::image_lib::load_image(1) :

load_image(image_path)返回一个被包装过的JAVA图像对象。它有一个参数image_path。这个参数是一个基于字符串的,指向一个图形文件的路径。

load_image_from_zip

::mfp::multimedia::image_lib::load_image_from_zip(3) :

load_image_from_zip(zip_file_name, zip_entry_path, zip_file_type)返回一个被包装过的JAVA图像对象。该图形对象从一个zip压缩文件中读取。它的第一个参数是基于字符串的zip文件的压缩路径。它的第二个参数是图像在该zip文件中的压缩路径。它的第三个参数要么是0,要么是1。如果等于0,表示普通的zip文件,而如果等于1,表示MFP App的安卓assets中的zip文件。

log

::mfp::math::log_exp::log(1) :

log(x)返回x的自然对数,注意x可以为复数。

log10

::mfp::math::log_exp::log10(1) :

函数log10(x)返回x以十为底的对数。

log2

::mfp::math::log_exp::log2(1) :

函数log2(x)返回x以2为底的对数。

loge

::mfp::math::log_exp::loge(1) :

函数loge(x)返回x的自然对数。

ls

::mfp::io::file::ls(1) :

print_file_list(path) (别名ls(path)或者dir(path))函数和Windows平台上的dir命令以及Linux平台上的ls命令类似。它打印出位于字符串path路径的文件或者目录中的所有子文件和子目录的信息。它返回打印的条目的个数。如果不存在一个文件或者目录对应于path路径,它返回-1。注意参数path是可以省略的。它的缺省值是当前目录。例子包括dir() (Windows)和ls("../testfile_copy.txt") (Android)。

max

::mfp::math::stat_stoch::max(0...) :

函数max(...)返回任意数目参数中的最大值。

med

::mfp::math::stat_stoch::med(0...) :

函数med(…)返回任意数目参数的中位数。如果参数的个数为偶数个,返回中间两个参数的平均值。

min

::mfp::math::stat_stoch::min(0...) :

函数min(...)返回任意数目参数中的最小值。

mod

::mfp::math::number::mod(2) :

mod(x,y)返回x除以正整数y的余数,如果x或者y不是整数,将被首先转换为整数。

move_file

::mfp::io::file::move_file(3) :

move_file(source, destination, replace_exist)函数移动位于字符串source路径的文件或文件夹到位于字符串destination路径的文件或位于destination路径的文件夹内(而不是位于destination路径的文件夹本身)。如果第三个参数,replace_exist,是true,那么如果目标文件已经存在,它将会被源文件(或者源文件夹中的对应文件)替换。注意第三个参数可以省略,它的缺省值为false。例子包括move_file("c:\\temp\\try1", "D:\\", true) (Windows)和copy_file("/mnt/sdcard/testfile.txt", "./testfile_copy.txt") (Android)。

ncr

::mfp::math::stat_stoch::ncr(2) :

函数nCr(x, y)计算有x个元素的集合S的k个元素组合的个数。注意x,y都是非负整数,x >= y。

now

::mfp::time_date::now(0) :

now()返回当前时刻和1970年1月1日午夜(UTC)的毫秒数时间差。

npr

::mfp::math::stat_stoch::npr(2) :

函数nPr(x, y)计算有x个元素的集合S的k个元素排列的个数。注意x,y都是非负整数,x >= y。

ones

::mfp::math::matrix::ones(1...) :

ones函数返回一个所有元素都是1的矩阵,本函数的参数用于决定矩阵的尺寸,要么为一批正整数,要么为一个正整数数列。注意函数表达式ones([])返回常数1。

open_image_display

::mfp::multimedia::image_lib::open_image_display(1) :

open_image_display(image_path_or_handle)创建一个image display供开发人员调用MFP函数绘图。它有一个参数。这个参数既可以是一个基于字符串的,指向一个图形文件的路径,也可以是null,还可以是一个由load_image,load_image_from_zip,create_image或者clone_image函数返回的JAVA image对象的句柄。

open_screen_display

::mfp::graph_lib::display::open_screen_display(6) :

open_screen_display返回一个screen display的句柄。screen display在JAVA平台上是一个窗口,在安卓平台上函数有6个可选参数:caption,background color,confirm quit,size,resizable, orientation。Caption是display的标题,该参数在安卓平台上不起作用;background color是display的背景色,它是一个4个或3个元素的数组,如果是4个元素,就是[Alpha,R,G,B],如果是3个元素,就是[R,G,B],在该数组中,每一个元素的值都是从0到255;confirm quit是一个布尔值,用于告诉screen display在退出时是否需要用户确认;size是screen display的大小,它是一个包含两个元素的数组,第一个元素是宽度,第二个元素是高度;resizable是告诉screen display是否可以调整大小,在安卓平台上,size和resizable都没有作用,orientiation仅仅用于安卓平台,用于指定screen display是横向(0),竖向(1)还是任意(-1)。该函数的示例为:

variable display = open_screen_display("Hello world", [255, 238, 17], true, [640, 480], true, 0)

以及

variable display = open_screen_display("Hello")

or

::mfp::math::logic::or(1...) :

or(x...)接受不少于1个的任意个数的参数,返回这些参数的逻辑或值。如果某一个参数不是布尔类型,将会被自动转换为布尔类型。

pause

::mfp::system::pause(1) :

pause(message)将暂停当前运行的程序,等待用户输入一个回车,然后继续。字符串参数message可以省略。如果不省略,message将作为提示被打印在屏幕上。

play_sound

::mfp::multimedia::audio_lib::play_sound(4) :

play_sound(source_path, repeat_or_not, volume, create_new_or_not)演奏一个声音文件,该声音文件可以是wave文件,也可以是midi文件,还可以是mp3文件。该函数返回一个演奏器的句柄,该句柄指向一个JAVA或安卓的多媒体演奏器。由于多媒体演奏器的资源是有限的,本函数会尽可能的回收并重用以前生成的多媒体演奏器。本函数有4个参数。第一个参数是声音文件的路径。第二个参数是一个布尔值,表示该声音是否需要重复演奏,这是一个缺省参数,缺省值是false。第三个参数是一个从0到1的浮点数,表示音量大小。这也是一个缺省参数,缺省值是1。第四个参数是一个布尔值,表示是否无论如何都强制生产一个新的多媒体演奏器。这也是一个缺省参数,缺省值是false。

play_sound_from_zip

::mfp::multimedia::audio_lib::play_sound_from_zip(6) :

play_sound_from_zip(source_zip_file_path, zip_entry_path, zip_file_type, repeat_or_not, volume, create_new_or_not)演奏一个从zip文件中抽取出的声音文件,该声音文件可以是wave文件,也可以是midi文件,还可以是mp3文件。该函数返回一个演奏器的句柄,该句柄指向一个JAVA或安卓的多媒体演奏器。由于多媒体演奏器的资源是有限的,本函数会尽可能的回收并重用以前生成的多媒体演奏器。本函数有6个参数。第一个参数是zip文件的路径。第二个参数是被压缩的声音文件的在zip文件中的位置路径。第三个参数是一个布尔值,0表示zip文件是普通的压缩文件,1表示zip文件位于MFP app的安卓asset目录中。第四个参数是一个布尔值,表示该声音是否需要重复演奏,这是一个缺省参数,缺省值是false。第五个参数是一个从0到1的浮点数,表示音量大小。这也是一个缺省参数,缺省值是1。第六个参数是一个布尔值,表示是否无论如何都强制生产一个新的多媒体演奏器。这也是一个缺省参数,缺省值是false。

plot2d

::mfp::graph_lib::plot_math::plot2d(5...) :

函数plot2D调用plot_multi_xy以绘制由最多8条2-D曲线所构成的图像。其包括以下参数:1.图像名字(图像文件名);2.图像标题;3.X轴标题;4.Y轴标题;5.是否显示网格;6.曲线标题;7.曲线颜色;8.t起始位置;9.t终止位置;10.t的间隔;11.以t为变量的X的表达式;12.以t为变量的Y的表达式...。其中,每增加一条新的曲线,需要添加7个参数(也就是参数6到12),最多定义8条曲线。需要注意的是,本函数不建议被使用。如果想绘制二维图形,请使用函数plot2DEX。

plot2dex

::mfp::graph_lib::plot_math::plot2dex(6...) :

函数plot2DEX调用plot_multi_xy以绘制由最多8条2-D曲线所构成的图像。其包括以下参数:1.图像名字(图像文件名);2.图像标题;3.X轴标题;4.Y轴标题;5.图像背景色;6.是否显示网格;7.曲线标题;8.曲线数据点颜色;9.曲线数据点形状;10.曲线数据点大小;11.曲线连接线颜色;12.曲线连接线类型;13.曲线连接线粗细;14.t起始位置;15.t终止位置;16.t的间隔;17.以t为变量的X的表达式;18.以t为变量的Y的表达式...。其中,每增加一条新的曲线,需要添加12个参数(也就是参数7到18),最多定义8条曲线。另外要注意图像背景色,曲线数据点的大小,曲线连接线颜色以及曲线连接线类型还没有被实现,曲线连接线粗细仅支持0(意味着没有连接线连接数据点)和非0(意味着有连接线连接数据点)。本函数的一个例子为:plot2DEX("chart 3", "3rd chart", "x", "y", "black", true, "cv1", "blue", "x", 2, "blue", "solid", 1, -5, 5, 0.1, "t", "t**2/2.5 - 4*t + 6", "cv2", "red", "square", 4, "square", "solid", 1, -10, 10, 0.1, "5*sin(t)", "10*cos(t)") 。

plot3d

::mfp::graph_lib::plot_math::plot3d(5...) :

函数plot3D调用plot_multi_xyz以绘制由最多8条3-D曲面所构成的图像。其包括以下参数:1.图像名字(图像文件名);2.图像标题;3.X轴标题;4.Y轴标题;5.Z轴标题;6.曲线标题;7.是网格还是填充表面(true是网格,false是填充表面);8.z值最小的时候的颜色;9.最小的z值(注意如果是null,意味着让软件自己找到最小的z值);10.z值最大的时候的颜色;11.最大的z值(注意如果是null,意味着让软件自己找到最大的z值);12.变量u的起始值;13.变量u的终止值;14.变量u的间隔(0意味着间隔由软件决定);15.变量v的起始值;16.变量v的终止值;17.变量v的间隔(0意味着间隔由软件决定);18.以u,v为变量的X的表达式;19.以u,v为变量的Y的表达式;20.以u,v为变量的Z的表达式;...。其中,每增加一条新的曲线,需要添加15个参数(也就是参数6到20),最多定义8条曲线。该函数的一个例子为:plot3D("chartI", "first chart", "x", "y", "z", "Curve1", true, "red", -0.5, "green", null, 0, pi, pi/8, -pi/2, pi/2, 0, "sin(u)*cos(v)", "sin(u)*sin(v)", "cos(u)") 。

plot_2d_curves

::mfp::graph_lib::plot_math::plot_2d_curves(6...) :

函数plot_2d_curves绘制由最多1024条2-D曲线所构成的图像。其包括以下参数:1.图像名字(图像文件名);2.图像标题;3.X轴标题;4.Y轴标题;5.图像背景色;6.是否显示网格(注意这个参数是一个字符串,其值为"true"或者"false");7.曲线标题;8.曲线数据点颜色;9.曲线数据点形状;10.曲线数据点大小;11.曲线连接线颜色;12.曲线连接线类型;13.曲线连接线粗细;14.内部变量的名字(通常为"t");15.内部变量的起始位置;16.内部变量的终止位置;17.内部变量的每一步变化间隔;18.基于内部变量的X的表达式;19.基于内部变量的Y的表达式...。其中,每增加一条新的曲线,需要添加13个参数(也就是参数7到19),最多定义1024条曲线。另外要注意图像背景色,曲线数据点的大小,曲线连接线颜色以及曲线连接线类型还没有被实现,曲线连接线粗细仅支持0(意味着没有连接线连接数据点)和非0(意味着有连接线连接数据点)。本函数的一个例子为:plot_2d_curves("chart 3", "3rd chart", "x", "y", "black", "true", "cv1", "blue", "x", 2, "blue", "solid", 1, "t", -5, 5, 0.1, "t", "t**2/2.5 - 4*t + 6", "cv2", "red", "square", 4, "square", "solid", 1, "t", -10, 10, 0.1, "5*sin(t)", "10*cos(t)") 。

plot_2d_data

::mfp::graph_lib::plot_math::plot_2d_data(16) :

函数plot_2d_data分析最少1组,最多8组数值向量,每组数值向量将会被绘制为一条曲线。输入的参数个数可以为1个(绘制一条曲线),2个(绘制一条曲线),4个(绘制2条曲线),6个(绘制3条曲线),8个(绘制4条曲线),10个(绘制5条曲线),12个(绘制6条曲线),14个(绘制7条曲线),16个(绘制8条曲线)。每一个参数都是一个数值向量(也就是一维矩阵)。如果只有一个参数,该参数中的每一个元素将会是绘制出的曲线中的一个点,否则,奇数号参数决定曲线中的每一个点的x值,偶数号参数决定每一个点的y值。注意决定x值的参数中包含的元素个数应该和决定y值的参数中包含的元素相同。函数例子包括plot_2d_data([5.5, -7, 8.993, 2.788])以及plot_2d_data([2.47, 3.53, 4.88, 9.42], [8.49, 6.76, 5.31, 0.88], [-9, -7, -5, -3, -1], [28, 42, 33, 16, 7])。

plot_3d_data

::mfp::graph_lib::plot_math::plot_3d_data(24) :

函数plot_3d_data分析最少1组,最多8组数值矩阵,每组数值矩阵将会被绘制为一条曲面。输入的参数个数可以为1个(绘制一条曲面),3个(绘制一条曲面),6个(绘制2条曲面),9个(绘制3条曲面),12个(绘制4条曲面),15个(绘制5条曲面),18个(绘制6条曲面),21个(绘制7条曲面),24个(绘制8条曲面)。如果只有一个参数,该参数必须是一个2维矩阵,矩阵中的每一个元素将会是绘制出的曲线中的一个点的z值,否则,每3个参数组成一个参数组,在每个参数组中,第一个参数必须是一个一维矩阵,参数中的元素值决定的决定曲面中各点的x值,第二个参数也必须是一个一维矩阵,参数中的元素值决定的决定曲面中各点的y值,第三个参数必须是一个二维矩阵,矩阵中的元素值决定每一个点的z值。注意决定x值的参数中包含的元素个数以及决定y值的参数中包含的元素应该和决定z值的参数中包含的元素个数相符。函数例子包括plot_3d_data([[2.47, 3.53, 4.88, 9.42], [8.49, 6.76, 5.31, 0.88], [-9, -7, -5, -3, -1]])以及plot_3d_data([1,2,3],[4,5,6,8],[[3,7,2],[5,8,9],[2,6,3],[7,4,4]],[8,7,4,8],[2,1],[[9,3,2,6],[4,5,3,7]])。

plot_3d_surfaces

::mfp::graph_lib::plot_math::plot_3d_surfaces(5...) :

函数plot_3d_surfaces绘制由最多1024条3-D曲面所构成的图像。其包括以下参数:1.图像名字(图像文件名);2.图像标题;3.X轴标题;4.Y轴标题;5.Z轴标题;6.曲线标题;7.是网格还是填充表面(这是一个布尔值,true是网格,false是填充表面);8.z值最小的时候的正面的颜色;9.z值最小的时候的反面的颜色;10.最小的z值(注意如果是null,意味着让软件自己找到最小的z值);11.z值最大的时候的正面的颜色;12.z值最大的时候的反面的颜色;13.最大的z值(注意如果是null,意味着让软件自己找到最大的z值);14.第一个内部变量的名字(通常为"u");15.第一个内部变量的起始值;16.第一个内部变量的终止值;17.第一个内部变量的每一步变化的间隔(0意味着间隔由软件决定);18.第二个内部变量的名字(通常为"v");19.第二个内部变量的起始值;20.第二个内部变量的终止值;21.第二个内部变量的每一步变化的间隔(0意味着间隔由软件决定);22.基于前述两个内部变量的X的表达式;23.基于前述两个内部变量的Y的表达式;24.基于前述两个内部变量的Z的表达式;...。其中,每增加一条新的曲面,需要添加19个参数(也就是参数6到24),最多定义1024条曲面。该函数的一个例子为:plot_3D_surfaces("chartI", "first chart", "x", "y", "z", "Curve1", false, "red", "cyan", -0.5, "green", "yellow", null, "u", 0, pi, pi/8, "v", -pi/2, pi/2, 0, "sin(u)*cos(v)", "sin(u)*sin(v)", "cos(u)") 。

plot_exprs

::mfp::graph_lib::plot_math::plot_exprs(8) :

函数plot_exprs分析最少1条,最多8条表达式以绘制2维或者3维图形(取决于表达式中未知变量的个数)。输入的表达式可以是一个等式,比如"4*x+9 == y +z**2"和"log(x*y) == x",也可以是一个左侧为未知变量的赋值表达式,比如"k= 3+ 7 * sin(z)",还可以是一个可以被看作为赋值表达式的表达式,比如"9*log(y)"可以被看作"x = 9 * log(y)"。注意所有表达式中未知变量的总数不多于3,每一条表达式中的未知变量的个数不能少于未知变量的总数减一。未知变量的起始范围可以在设置中设定,缺省是从-5到5,但是使用者可以在图形绘制出来之后动态调整每个未知变量的范围。如果有两个未知变量并且其中一个是希腊字母α、β、γ或者θ,则绘制极坐标图形而不是普通2维图形。本函数的一个例子是plot_exprs("4*x+sin(y)", "4-y**2==(x**2 + z**2)", "x*lg(x)/log2(z)==y")。需要指出的是,如果是绘制二维隐函数表达式,这个函数最多能绘制出4个表达式解;如果绘制的是3维隐函数表达式,这个函数会根据情况,可能会求每一个变量的最多两组解,绘制出最多6个解表达式图形,这样一来,整个求解绘图过程会花费比较长的时间。

plot_multi_rangle

::mfp::graph_lib::plot_math::plot_multi_rangle(2...) :

plot_multi_rangle(包含>=2个参数)用于绘制2维或极坐标图像,每个图像最多包括1024条曲线。参数1为图像名字,参数2为图像设置,该参数是一个字符串,比如"chart_type:multiXY;chart_title:1 chart;x_title:x;x_min:-6.2796950076838645;x_max:6.918480857169536;x_labels:10;y_title:y;y_min:-4.487378580559947;y_max:4.1268715788884345;y_labels:10;background_color:black;show_grid:true"。注意chart_type的值是multiXY(用于绘制二维图像)或者multiRangle(用于绘制极坐标图像),x_labels和y_lables分别代表x和y轴上有多少刻度标记(对于极坐标图像是R轴有多少刻度标记,幅角的刻度标记不可设)。从参数3开始,每3个参数定义一条曲线,在这3个参数中,第一个参数为曲线设置,第二个参数是包含所有x数值(或者R数值)的向量,第三个参数是包括所有y值(或者幅角值)的向量。曲线设置参数为一个字符串,比如"curve_label:cv2;point_color:blue;point_style:point;point_size:1;line_color:blue;line_style:solid;line_size:1"。另外注意x和y的每一个数值都必须为实数,x和y的数值个数必须一致。本函数不返回数值。本函数的一个例子是plot_multi_rangle("chart2", "chart_type:multiXY;chart_title:1 chart;x_title:x;x_min:-6;x_max:6;x_labels:6;y_title:y;y_min:-4;y_max:4;y_labels:5;background_color:black;show_grid:true", "curve_label:cv2;point_color:blue;point_style:circle;point_size:3;line_color:blue;line_style:solid;line_size:1", [-5, -3, -1, 0, 1, 2, 3, 4, 5], [-3.778, -2.9793, -2.0323, -1.1132, 0.2323, 1.2348, 3.9865, 2.3450, 0.4356]) 。

plot_multi_xy

::mfp::graph_lib::plot_math::plot_multi_xy(2...) :

plot_multi_xy(包含>=2个参数)用于绘制2维或极坐标图像,每个图像最多包括1024条曲线。参数1为图像名字,参数2为图像设置,该参数是一个字符串,比如"chart_type:multiXY;chart_title:1 chart;x_title:x;x_min:-6.2796950076838645;x_max:6.918480857169536;x_labels:10;y_title:y;y_min:-4.487378580559947;y_max:4.1268715788884345;y_labels:10;background_color:black;show_grid:true"。注意chart_type的值是multiXY(用于绘制二维图像)或者multiRangle(用于绘制极坐标图像),x_labels和y_lables分别代表x和y轴上有多少刻度标记(对于极坐标图像是R轴有多少刻度标记,幅角的刻度标记不可设)。从参数3开始,每3个参数定义一条曲线,在这3个参数中,第一个参数为曲线设置,第二个参数是包含所有x数值(或者R数值)的向量,第三个参数是包括所有y值(或者幅角值)的向量。曲线设置参数为一个字符串,比如"curve_label:cv2;point_color:blue;point_style:point;point_size:1;line_color:blue;line_style:solid;line_size:1"。另外注意x和y的每一个数值都必须为实数,x和y的数值个数必须一致。本函数不返回数值。本函数的一个例子是plot_multi_xy("chart2", "chart_type:multiXY;chart_title:1 chart;x_title:x;x_min:-6;x_max:6;x_labels:6;y_title:y;y_min:-4;y_max:4;y_labels:5;background_color:black;show_grid:true", "curve_label:cv2;point_color:blue;point_style:circle;point_size:3;line_color:blue;line_style:solid;line_size:1", [-5, -3, -1, 0, 1, 2, 3, 4, 5], [-3.778, -2.9793, -2.0323, -1.1132, 0.2323, 1.2348, 3.9865, 2.3450, 0.4356]) 。

plot_multi_xyz

::mfp::graph_lib::plot_math::plot_multi_xyz(2...) :

plot_multi_xyz(包含>=2个参数)用于绘制3维图像,每个图像最多包括1024条曲面。参数1为图像名字,参数2为图像设置,图像设置参数是一个字符串,比如"chart_type:multiXYZ;chart_title:This is a graph;x_title:x axis;x_min:-24.43739154366772;x_max:24.712391543667717;x_labels:10;y_title:Y axis;y_min:-251.3514430737091;y_max:268.95144307370913;y_labels:10;z_title:Z axis;z_min:-1.6873277335234405;z_max:1.7896774628184482;z_labels:10"。需要注意的是chart_type的值必须是multiXYZ,x_labels,y_labels和z_lables分别代表x,y和z轴上有多少刻度标记。从参数3开始,每4个参数定义一条曲线,在这4个参数中,第一个参数为曲线设置,第二个参数是包含所有x数值的矩阵,第三个参数是包括所有y值的矩阵,第四个参数是包括所有z值的矩阵。曲线设置参数为一个字符串,比如"curve_label:cv2;is_grid:true;min_color:blue;min_color_1:cyan;min_color_value:-2.0;max_color:white;max_color_1:yellow;max_color_value:2.0"。另外注意x,y和z的每一个数值都必须为实数,x,y和z的矩阵的尺寸必须一致。本函数不返回数值。本函数的一个例子为:plot_multi_xyz("chartII", "chart_type:multiXYZ;chart_title:This is a graph;x_title:x;x_min:-5;x_max:5;x_labels:6;y_title:Y;y_min:-6;y_max:6;y_labels:3;z_title:Z;z_min:-3;z_max:1;z_labels:4", "curve_label:cv1;min_color:blue;min_color_1:green;max_color:yellow;max_color_1:red", [[-4, -2, 0, 2, 4],[-4, -2, 0, 2, 4],[-4, -2, 0, 2, 4]], [[-5, -5, -5, -5, -5], [0, 0, 0, 0, 0], [-5, -5, -5, -5, -5]], [[-2.71, -2.65, -2.08, -1.82, -1.77], [-2.29, -2.36, -1.88, -1.45, -1.01], [-1.74, -1.49, -0.83, -0.17, 0.44]]) 。

plot_polar

::mfp::graph_lib::plot_math::plot_polar(6...) :

函数plot_polar调用plot_multi_xy以绘制由最多8条极坐标曲线所构成的图像。其包括以下参数:1.图像名字(图像文件名);2.图像标题;3.R轴标题;4.幅角标题;5.图像背景色;6.是否显示网格;7.曲线标题;8.曲线数据点颜色;9.曲线数据点形状;10.曲线数据点大小;11.曲线连接线颜色;12.曲线连接线类型;13.曲线连接线粗细;14.t起始位置;15.t终止位置;16.t的间隔;17.以t为变量的R的表达式;18.以t为变量的幅角的表达式...。其中,每增加一条新的曲线,需要添加12个参数(也就是参数7到18),最多定义8条曲线。另外要注意图像背景色,曲线数据点的大小,曲线连接线颜色以及曲线连接线类型还没有被实现,曲线连接线粗细仅支持0(意味着没有连接线连接数据点)和非0(意味着有连接线连接数据点)。本函数的一个例子为:plot_polar("chart 3", "3rd chart", "R", "Angle", "black", true, "cv1", "blue", "point", 0, "yellow", "solid", 1, -5, 5, 0.1, "cos(t)", "t", "cv2", "red", "square", 4, "green", "solid", 1, 0, PI*2.23, PI/10, "5*sqrt(t)", "t + PI") 。

plot_polar_curves

::mfp::graph_lib::plot_math::plot_polar_curves(6...) :

函数plot_polar_curves绘制由最多1024条极坐标曲线所构成的图像。其包括以下参数:1.图像名字(图像文件名);2.图像标题;3.幅度轴标题;4.幅角标题(需要注意幅角标题在图中实际上不会被显示);5.图像背景色;6.是否显示网格(注意这个参数是一个字符串,其值为"true"或者"false");7.曲线标题;8.曲线数据点颜色;9.曲线数据点形状;10.曲线数据点大小;11.曲线连接线颜色;12.曲线连接线类型;13.曲线连接线粗细;14.内部变量的名字(通常为"t");15.内部变量的起始位置;16.内部变量的终止位置;17.内部变量的每一步变化间隔;18.基于内部变量的幅度的表达式;19.基于内部变量的幅角的表达式...。其中,每增加一条新的曲线,需要添加13个参数(也就是参数7到19),最多定义1024条曲线。另外要注意图像背景色,曲线数据点的大小,曲线连接线颜色以及曲线连接线类型还没有被实现,曲线连接线粗细仅支持0(意味着没有连接线连接数据点)和非0(意味着有连接线连接数据点)。本函数的一个例子为:plot_polar_curves("chart 3", "3rd chart", "R", "angle", "black", "false", "cv1", "blue", "x", 2, "blue", "solid", 1, "t", -5, 5, 0.1, "t", "t**2/2.5 - 4*t + 6", "cv2", "red", "square", 4, "square", "solid", 1, "t", -10, 10, 0.1, "5*sin(t)", "10*cos(t)") 。

plot_polar_data

::mfp::graph_lib::plot_math::plot_polar_data(16) :

函数plot_polar_data分析最少1组,最多8组数值向量,每组数值向量将会被绘制为一条极坐标曲线。输入的参数个数可以为2个(绘制一条曲线),4个(绘制2条曲线),6个(绘制3条曲线),8个(绘制4条曲线),10个(绘制5条曲线),12个(绘制6条曲线),14个(绘制7条曲线),16个(绘制8条曲线)。每一个参数都是一个数值向量(也就是一维矩阵)。奇数号参数决定曲线中的每一个点的R值,偶数号参数决定每一个点的幅角值。注意决定R值的参数中包含的元素个数应该和决定幅角值的参数中包含的元素相同。函数一个例子为plot_polar_data([2.47, 3.53, 4.88, 9.42], [8.49, 6.76, 5.31, 0.88], [-9, -7, -5, -3, -1], [28, 42, 33, 16, 7])。

pow

::mfp::math::log_exp::pow(2) :

pow(x,y)返回x的y次方,注意x和y可以为实数,可以为虚数。如果结果有多个值,返回第一个值。

::mfp::math::log_exp::pow(3) :

pow(x,y,z)返回包含x的y次方的前z个值组成的一个向量,如果x的y次方只有少于z个值,返回所有值。注意y必须为实数,x可以为实数,可以为虚数,z必须为正整数。

print

::mfp::io::console::print(1) :

print(x)向输出端打印任意数据类型x的值。

print_file_list

::mfp::io::file::print_file_list(1) :

print_file_list(path) (别名ls(path)或者dir(path))函数和Windows平台上的dir命令以及Linux平台上的ls命令类似。它打印出位于字符串path路径的文件或者目录中的所有子文件和子目录的信息。它返回打印的条目的个数。如果不存在一个文件或者目录对应于path路径,它返回-1。注意参数path是可以省略的。它的缺省值是当前目录。例子包括dir() (Windows)和ls("../testfile_copy.txt") (Android)。

print_line

::mfp::io::console::print_line(1) :

print_line(x)向输出端打印任意数据类型x的值然后再起一行。注意x是一个可选参数,它的缺省值是空字符串""。

printf

::mfp::io::console::printf(1...) :

printf(format_string, ...),sprintf(format_string, ...)和fprintf(fd, format_string, ...)和C/C++中的对应函数工作方式相似。这些函数通过format_string和其后的数值参数构造出一个新的字符串,printf函数将字符串打印到标准输出,sprintf函数将字符串作为返回值返回,fprintf函数则将字符串输出到文件号为fd的文本文件。字符串format_string支持输入整数(%d、%i、%x等),浮点数(%e、%f等),字符和字符串(%c和%s)等等。用户可以在C语言的帮助文档中找到format_string的构造方法。例如,printf("Hello world!%f", 3.14)将会打印输出"Hello world!3.140000",而sprintf("%c%d", "A", 9)则返回"A9"(注意MFP不支持单一字符数据类型,所以单一的字符将会存储为一个只包括一个字符的字符串)。

product_over

::mfp::math::stat_stoch::product_over(3) :

函数product_over(x, y, z)计算基于字符串的表达式x中的变量取值从整数y逐步变化到整数z的值的乘积。y和z必须是字符串的形式,其中,y必须写成一个赋值表达式,比如"a=10",这里,a是变量名。一个函数的例子为product_over("x+1", "x=1", "10")。

pull_event

::mfp::graph_lib::event::pull_event(1) :

pull_event(display)从screen display的输入事件(比如,鼠标事件或者触摸屏的手势事件)序列中按顺序取走一个事件。如果没有输入事件,或者不是screen display而是image display,它返回Null,否则返回输入事件。

pwd

::mfp::io::file::pwd(0) :

get_working_dir()(别名pwd())返回基于字符串的当前路径。

quick_sort

::mfp::math::stat_stoch::quick_sort(2) :

函数quick_sort(desc, original_list)将拥有至少一个元素的向量original_list排序并返回排序后的向量。如果desc是true或者1,按照从大到小排序,否则(false或者0)按照从小到大排序。比如,输入quick_sort(1, [5,6,7,9,4])得到[9,7,6,5,4]而输入quick_sort(0, [5,6,7,9,4])的结果是[4,5,6,7,9]。

rand

::mfp::math::stat_stoch::rand(0) :

rand()函数返回一个大于等于0小于1的随机浮点数。

rank

::mfp::math::matrix::rank(1) :

rank(matrix)返回矩阵的秩。比如,rank([[1,2],[2,4]])将返回1。

read_file

::mfp::io::file::read_file(2) :

函数read_file读入一个文件并返回该文件的内容。它有两个参数。第一个参数是文件的路径。第二个参数是读入模式。读入模式是一个字符串。如果读入模式是"b"或者"B"意味着以以二进制方式读入,该函数会返回一个二进制数组。如果是其它字符串,则意味着以文本方式读入,该函数会返回一个字符串。第二个参数可以省略。在第二个参数缺省时本函数以文本方式读入文件并返回字符串 。

real

::mfp::math::complex::real(1) :

real(x)返回复数x的实部。

receive_rtc_mmedia_message

::mfp::multimedia::webrtc_lib::receive_rtc_mmedia_message(1) :

此函数取回一个web RTC消息。注意此处的web RTC是指的用于支持声音和视频通信的web RTC函数库,而不是用于支持数据通信的WEBRTC协议栈。本函数只有一个参数,就是等待的时间。如果该参数是一个正数,则代表等待的毫秒数。如果该参数是0,函数立即返回。如果是一个负数,函数会阻塞等待直到有消息到来。如果在等待超时后仍然没有消息到来,则返回null。如果函数取回了一个合法的消息,则该函数的返回值是一个四个元素的数组。第一个元素是消息的目标peer connection对象的id。第二个元素是当前RTC会话的id。第三个元素是消息的类型。最后一个元素是消息的内容。如果消息是RTC信令,消息的类型则是"signal",而消息的内容则是一个Json字符串。该Json字符串的"type"域值是信令的类型,也就是"offer","answer"或者"candidate";如果信令的类型是"offer"或者"answer",则该Json字符串的"sdp"域值是SDP的内容。如果消息是peer connection的事件,消息的类型则是"pc",而消息的内容则是一个Json字符串。该Json字符串的"type"域值是事件的类型,比如"ice_connection_change";而"content"域值则是基于字符的事件内容。

receive_sandbox_message

::mfp::paracomp::connect::receive_sandbox_message(1...) :

receive_sandbox_message函数返回沙盒或者MFP主进程发送的信息。发送者可能位于一个和本地有直接连接(这里指的是通过MFP的connect函数构成的连接)的远端MFP实例中(可能是一个call沙盒或者该MFP实例的主进程),也可能就是本地MFP实例的一个call沙盒或者该MFP实例的主进程。它有两种工作模式。第一种工作模式只有一个参数,也就是等待的时间。如果是0,则意味着没有等待,立即返回。如果队列中有消息,则返回队列中的第一个消息,否则,返回NULL。如果等待时间小于0,则意味着阻塞模式。也就是说如果队列中没有消息,函数将会阻塞。如果等待时间是正数,则代表等待的毫秒数。如果等待时间过去之后队列中仍然没有消息,则返回NULL。如果本函数是在沙盒中被调用,则必须采用第一种工作模式。第二种工作模式有两个参数。第一个参数为一个代表本地信息(也就是监听地址)的对象。它告诉本函数选择哪一个本地地址收取消息。该信息对象可由调用generate_interface函数返回得到。第二个参数则是等待时间,其具体意义参见第一种工作模式。如果本函数是在MFP主进程中被调用,则必须采用第二种工作模式。本函数如果返回一个合法的消息,该返回值则是一个基于数组的字典。其中,“InterfaceInfo”的字段是发送端的本地信息,包括协议和地址。如果发送端和接收端位于同一个MFP实例中,并且接收端是该MFP实例的一个call沙盒而发送端是该MFP实例的主进程,这个字段则为NULL。“ConnectId”的字段是发送端的连接ID,如果发送端是MFP实例的主进程,该字段为一个空字符串。“CallId”的字段是发送端的call沙盒ID,如果发送端是MFP实例的主进程,该字段为0。“TransConnectSrcLocal”字段是传输连接发送端自己看到的本地地址。这里,传输连接未必是发送或者接收端call沙盒的发起连接。但传输连接的两端必然分别位于发送端和接收端所在的MFP实例中。发送端,无论是call沙盒还是MFP主进程,将要发送的消息交给MFP实例,然后发送端MFP实例将该消息通过传输连接发送到接收端的MFP实例,再由接收端MFP实例将消息配送到目标沙盒或者MFP主进程。注意由于传输连接是双向的,发送端不一定是传输连接的客户端,相应地,接收端也不一定是传输连接的服务端。类似地,字段“TransConnectSrcRemote”是传输连接发送端看到的接收端地址;字段“TransConnectDestLocal”是传输连接接收端自己看到的本地地址;字段“TransConnectDestRemote”是传输连接接收端看到的发送端地址。通常情况下,字段“TransConnectSrcLocal”和“TransConnectDestRemote”的值应该是一致的,字段“TransConnectSrcRemote”和“TransConnectDestLocal”的值应该是一致的。但是,如果是TCPIP协议并且发送端和接收端之间存在NAT层,这些字段的值不见得会一致。如果接收端位于传输连接的服务端,“TransConnectDestRemote”字段的值会非常有用,因为它可以告诉MFP传输连接在服务端的id,只有知道id该连接才可以被重用,并且还可以通过该连接发送回复的消息。如果发送端和接收端位于同一个MFP实例中,则不需要通过传输连接发送消息,这种情况下上述4个字段的内容都是空字符串。最后,消息的“Message”的字段是消息的内容。本函数的两个例子为receive_sandbox_message(-1)和receive_sandbox_message(local_info, -1)。

recip

::mfp::math::matrix::recip(1) :

recip(x)计算x的倒数,注意当前仅支持数值或二维矩阵。

remove_elem_from_ablist

::mfp::data_struct::array_based::remove_elem_from_ablist(2) :

remove_elem_from_ablist(array_based_list, idx)将基于数组的序列array_based_list的idx号元素删除并返回更新后的基于数组的序列。作为参数的array_based_list和返回值共享元素。注意idx必须是一个合法的索引。

remove_peer_stream

::mfp::multimedia::webrtc_lib::remove_peer_stream(1) :

此函数移除peer connection对象的视频流。这个函数仅有一个参数,也就是peer connection对象的Id。这个函数不返回任何值。

roots

::mfp::math::polynomial::roots(1...) :

函数roots(a, ...)返回一个多项式的根数列。如果a是一个实数或虚数数列,返回多项式a[0] * x**(N-1) + a[1] * x**(N-2) + ... + a[N-2] * x + a[N-1] = 0的根数列。如果a是一个单一的实数,此函数则必须拥有至少两个参数,返回多项式a * x**(number_of_optional_params) + optional_params[0] * x**(number_of_optional_params - 1) + ... + optional_params[number_of_optional_params - 2] * x + optional_params[number_of_optional_params - 1] = 0的根数列。

需要注意的是,如果该多项式次数大于等于4,根的计算是通过牛顿拉夫逊法给出的近似值。由于牛顿拉夫逊法需要迭代计算,运算时间会比较长(取决于设备的性能)。

函数例子:

如果要计算多项式3 * x**2 - 4 * x + 1 == 0的根,输入命令:roots([3, -4, 1])获得的结果是[1, 0.33333333];

如果要计算多项式(1+2i) * x**3 + (7-6i) * x**2 + 0.54 * x - 4.31 - 9i == 0的根,输入命令:roots(1+2i, 7-6i, 0.54, -4.31-9i)获得的结果是[0.79288607 + 3.9247084 * i, -0.56361748 - 0.78399569 * i, 0.7707314 + 0.85928729 * i]。

round

::mfp::math::number::round(1) :

round(x),x是浮点数,返回x的四舍五入值。

::mfp::math::number::round(2) :

round(x,y),x是浮点数,y为非负整数,返回小数点后有y位数字的x的四舍五入值。

save_image

::mfp::multimedia::image_lib::save_image(3) :

save_image(image, file_format, path)保存一个被包装过的JAVA图像对象至一个图形文件。本函数的第一个参数是被包装过的JAVA图像对象,第二个参数是基于字符串的图像文件的格式,当前仅支持"png","jpg"以及"bmp"格式。第三个参数是图像文件的路径。如果成功保存,本函数返回True,否则返回False。本函数的一个例子为:save_image(img, "png", "C:\\Temp\\1.png")。

scanf

::mfp::io::console::scanf(1) :

scanf(format_string),sscanf(input_from, format_string)和fscanf(fd, format_string)和C/C++中的对应函数工作方式相似。scanf读取用户的一行输入,sscanf读取字符串input_from,fscanf从文件(文件号fd)中读取文件内容。字符串format_string支持输入整数(%d、%i、%x等),浮点数(%e、%f等),字符和字符串(%c和%s)等等。用户可以在C语言的帮助文档中找到format_string的构造方法。但是,和C语言有所不同,MFP中的这些函数不需要输入用于存储读取数值的参数。所有的读取的数值将会保存在一个数组中作为返回值返回。比如,sscanf("3Hello world!", "%d%c%c%s")将会返回[3, "H", "e", "llo"](注意MFP不支持单一字符数据类型,所以单一的字符将会存储为一个只包括一个字符的字符串)。

send_sandbox_message

::mfp::paracomp::connect::send_sandbox_message(1...) :

send_sandbox_message函数将消息发送到沙盒或MFP主进程。它具有四种工作模式。第一种工作模式是从沙盒向其本地MFP主进程发送消息。在这种情况下,该功能只有一个参数,即消息内容。请注意,消息内容不必是字符串。例如,send_sandbox_message([1,2,3])从沙盒向本地MFP主进程发送[1,2,3]。第二种工作模式是将消息从MFP主进程或沙盒发送到本地沙盒。在这种情况下,该功能需要四个参数。第一个参数是本地信息对象。可以从generate_interface函数获得此本地信息对象。启动接收方沙盒的call请求被本地信息对象所代表的接口地址接受。第二个参数是接收方沙盒的连接ID。注意这个连接是启动接收方沙盒call对象的连接。第三个参数是接收方沙盒的call沙盒Id。最后一个参数是消息内容。此模式的一个示例是send_sandbox_message(local_info,"127.0.0.1",1,238.975+3.01i)。第三种工作模式是将消息从本地沙盒或MFP主进程发送到远端MFP主进程。请注意,本地MFP实例必须已经通过调用connect函数连接到远端MFP实例。此模式需要两个参数。第一个是从connect函数返回的连接对象(即返回值的“CONNECT”字段)。第二个参数是消息内容。一个示例是send_sandbox_message(conn1,"Hello!")。最后一种工作模式是将消息从本地沙盒或MFP主进程发送到远端沙盒。请注意,本地MFP实例必须通过调用connect函数连接到远端MFP实例。此模式需要五个参数。第一个参数是从连接函数返回的连接对象(即返回值的“CONNECT”字段)。第二个参数是从generate_interface函数获得的远程接口对象。此远程接口位于连接的另一端。远程接口接受了启动接收方沙盒的call请求。第三个参数是接收方沙盒的连接ID。注意这个连接是启动接收方沙盒call对象的连接。第四个参数是接收方沙盒的call沙盒ID。最后一个参数是消息内容。此模式的一个示例是send_sandbox_message(conn1,remote_info,"192.168.1.139",4,[[1,2],[3,4]])。

set_array_elem

::mfp::array::set_array_elem(3) :

set_array_elem(x,y,z)将x[y]赋值为z,并且返回新的x。注意x不是必须为矩阵,y必须为正整数向量。y的值可以超出x的尺寸和维度。比如,如果x=3,y=[1,2],z=2+3i,那么set_array_elem(x,y,z)等于[3, [0, 0, 2+3i]]。还要注意,调用了set_array_elem函数之后,x的值可能会自动变为新值,也可能不会。所以,必须将set_array_elem的返回值赋予x,以保证x的值得到更新。

set_audio_track_enable

::mfp::multimedia::webrtc_lib::set_audio_track_enable(2) :

此函数激活或者关闭音轨。这个函数有两个参数。第一个参数是一个显示窗口的句柄。该显示窗口的句柄可以从open_screen_display函数调用中返回。第二个是一个布尔值,True表示激活音轨而false则表示关闭音轨。这个函数的返回值是音轨之前的状态。True表示函数调用之前是激活状态而false则表示函数调用之前是关闭状态。

set_display_bgrnd_color

::mfp::graph_lib::display::set_display_bgrnd_color(2) :

set_display_bgrnd_color(display, color)为一个display设置背景色。该display既可以是screen display,也可以是image display。背景色是一个4个或3个元素的数组,如果是4个元素,就是[Alpha,R,G,B],如果是3个元素,就是[R,G,B],在该数组中,每一个元素的值都是从0到255。

set_display_bgrnd_image

::mfp::graph_lib::display::set_display_bgrnd_image(3) :

set_display_bgrnd_image(display, image, mode)为一个display设置背景图像。该display既可以是screen display,也可以是image display。背景图像是一个image句柄。mode是背景图像的布置方式,0表示原始背景图像被置于左上角,1表示背景图像被缩放值screen大小以便覆盖整个screen,2表示背景图像如贴瓷砖一样重复整齐排列,但每一片“瓷砖”大小保持原状, 3背景图像位于屏幕正中央。在这种情况下背景图像的大小也不会改变。

set_display_caption

::mfp::graph_lib::display::set_display_caption(2) :

set_display_caption(display, caption)在JAVA平台上设置一个screen display的标题。set_display_resizable对image display不起作用,在安卓平台上也不起作用。

set_display_confirm_close

::mfp::graph_lib::display::set_display_confirm_close(2) :

set_display_confirm_close(display, confirm_close_or_not)设置关闭一个screen display是否需要确认。set_display_confirm_close对image display不起作用。

set_display_orientation

::mfp::graph_lib::display::set_display_orientation(2) :

set_display_orientation(display, orientation)设置安卓平台上一个screen display是横屏(orientation等于0)还是竖屏(orientation等于1)还是横竖均可(orientation等于-1)。set_display_orientation对image display不起作用,在JAVA平台上也不起作用。

set_display_resizable

::mfp::graph_lib::display::set_display_resizable(2) :

set_display_resizable(display, resizable_or_not)设置一个screen display是否可以改变大小。set_display_resizable对image display不起作用。

set_display_size

::mfp::graph_lib::display::set_display_size(3) :

set_display_size(display, width, height)设置一个display(既可以是screen display,也可以是image display)的长度和高度分别为width和height。

set_display_snapshot_as_bgrnd

::mfp::graph_lib::display::set_display_snapshot_as_bgrnd(3) :

set_display_snapshot_as_bgrnd(display, update_screen_or_not, clear_callbacks_or_not)将一个display(既可以是screen display,也可以是image display)的截屏设置为它的背景图案。它的第二个参数,update_screen_or_not,告诉MFP在截屏之前该display是否需要刷新;它的第三个参数,clear_callbacks_or_not,告诉MFP是否需要将屏幕绘图事件序列清空。比如,set_display_snapshot_as_bgrnd(d, true, true)首先刷新屏幕d,然后将屏幕绘图事件序列清空,最后截屏并将所得图像作为屏幕背景图像。

set_elem_in_ablist

::mfp::data_struct::array_based::set_elem_in_ablist(3) :

set_elem_in_ablist(array_based_list, idx, ref_of_elem)将基于数组的序列array_based_list在idx处的值设置为ref_of_elem的引用。如果idx不合法,一个异常将会被抛出。

set_file_last_modified_time

::mfp::io::file::set_file_last_modified_time(2) :

set_file_last_modified_time(path, time)设置基于字符串路径的path的文件或目录的上一次更改时间为time。该时间等于从1970年1月1日午夜开始到上一次更改时刻所经历的毫秒数。如果path不存在或者没有访问权限,返回false,否则返回true。例子包括("C:\\Temp\\Hello\\", 99999999) (Windows)和set_file_last_modified_time("./hello.txt", 1111111111) (Android)。

set_json_field

::mfp::exdata::json::set_json_field(3) :

此函数将一个值设置到代表JSON数据的字符串中。此函数有三个参数。第一个参数为一个代表JSON数据的字符串,第二个参数为JSON域的名字,第三个参数为JSON域的值。注意这三个参数都是区分大小写的。如果这个JSON域已经存在,则将新值写入,否则,将创建一个新的JSON域。这个函数的返回值是设置后的新的JSON域的字符串,或者如果数据类型不支持或JSON域的名字错误则抛出异常。本函数的一个例子是set_json_field("{\"ABC\": null, \"JJJ\": {\"DEF\":[1, 8, [\"Welcome\", 9.99]],\"ZZ\":\"hello boy\"}}", "JJJ", "New value")。

set_local_host_address

::mfp::paracomp::host::set_local_host_address(4) :

set_local_host_address函数用于设置所选通信协议的本地地址。它有四个参数。第一个参数是通信协议的的名字。当前只支持WEBRTC协议所以它只能是字符串"WEBRTC"。第二个参数是通信接口的名称,当前支持"main"作爲参数值。第三个参数是通信地址。由于仅支持WEBRTC协议,通信地址必须是一个合法的电子邮件地址。推荐使用微软的outlook邮件或者腾讯公司的QQ邮件。第四个参数是一个字符串数组。数组中的第一个元素为"0",代表该email地址支持smtp和imap协议。数组中的第二个元素为电子邮件的密码。注意这是smtp和imap协议收发邮件所使用的密码,该密码未见得和登录网页信箱所需要的密码一样。如果开发人员使用微软的outlook邮件或者hotmail邮箱,或者谷歌的gmail,以及腾讯的QQ邮件,以上信息就足够了。但是,如果是其他的邮件地址,开发人员则需要提供smtp服务器和imap服务器的信息。这包括smtp服务器的地址,端口,是否支持SSL协议,和imap服务器的地址,端口,以及是否支持SSL协议。其中,是否支持SSL协议也是一个字符串,"0"表示不支持,"1"表示支持,"-1"表示不清楚。这些信息将分别填入第四个参数的第三号到第八号元素中。本函数的一个例子是set_local_host_address("WEBRTC", "main", "abcxyz@yahoo.com", ["0", "xxxxyyyyzzzzwwww", "smtp.mail.yahoo.com", "465", "1", "imap.mail.yahoo.com", "993", "1"])。另外一个例子是set_local_host_address("WEBRTC", "main", "mnopqrst@outlook.com", ["0", "abcd1234"])。

set_porterduff_mode

::mfp::graph_lib::draw::set_porterduff_mode(2) :

set_porterduff_mode(painting_extra, porterduff_mode)为一个painting extra数据结构设置porterduff模式。painting extra数据结构在painting事件中被调用。Porterduff模式告诉MFP如何绘制目标区域。它是一个大写的字符串,具有以下可能值:"CLEAR","SRC","DST","SRC_OVER","DST_OVER","SRC_IN","DST_IN","SRC_OUT","DST_OUT","SRC_ATOP","DST_ATOP","XOR"或者"",其中,空字符串""是缺省值。开发者可以参考JAVA文档以获取porterduff模式的详细信息。由于porterduff模式的使用非常复杂,在不十分清楚porterduff模式内部机制的情况下,不建议用户调用此函数。换句话说,使用porterduff模式的缺省值在一般情况下足以满足用户的需求。

set_rtc_media_remote_description

::mfp::multimedia::webrtc_lib::set_rtc_media_remote_description(3) :

本函数在接收到一个answer信令之后设置web RTC的远程描述。注意此处的web RTC是指的用于支持声音和视频通信的web RTC函数库,而不是用于支持数据通信的WEBRTC协议栈。本函数有3个参数。第一个是peer connection对象的id。第二个是SDP的类型。该参数应该就是一个"answer"字符串。第三个参数是SDP的内容,也就是answer信令的内容。本函数不返回任何值。本函数的一个例子是set_rtc_media_remote_description(remoteAddr, sdpType, sdpContent)。

set_sound_repeat

::mfp::multimedia::audio_lib::set_sound_repeat(2) :

set_sound_repeat(sound_handle, repeat_or_not)设置一个sound_handle所代表的声音是否重复演奏。

set_sound_volume

::mfp::multimedia::audio_lib::set_sound_volume(2) :

set_sound_volume(sound_handle, volume)设置一个sound_handle所代表的声音的音量,注意音量参数volume的值变化范围是从0到1。

set_value_in_abdict

::mfp::data_struct::array_based::set_value_in_abdict(3) :

set_value_in_abdict(array_based_dictionary, key, value)将基于数组的字典array_based_dictionary的key所对于的值设置为value的引用并返回修改过的字典。如果key不存在,它将会被创造出来。注意key只能是字符串但是value可以是任意数据类型。

set_video_track_enable

::mfp::multimedia::webrtc_lib::set_video_track_enable(2) :

此函数激活或者关闭视频功能。这个函数有两个参数。第一个参数是一个显示窗口的句柄。该显示窗口的句柄可以从open_screen_display函数调用中返回。第二个是一个布尔值,True表示激活视频功能而false则表示关闭视频功能。这个函数的返回值是视频功能之前的状态。True表示函数调用之前是激活状态而false则表示函数调用之前是关闭状态。

shutdown_display

::mfp::graph_lib::display::shutdown_display(2) :

shutdown_display函数用于关闭一个display。该display既可以是一个窗口,也就是screen display,也可以是一个图像,也就是image display。它有两个参数。第一个参数是该display,第二个参数是一个可选参数,它是一个布尔值,true表示关闭screen display时不需要用户确认,而不管在该display创建时,有无设置需要确认退出。它的缺省值是false。注意它对image display不起作用。该函数的例子包括:

shutdown_display(d)

以及

shutdown_display(d, true)

sin

::mfp::math::trigon::sin(1) :

sin(x)返回x的正弦值,注意x可以为复数。

sind

::mfp::math::trigon::sind(1) :

sind(x)返回基于角度的x的正弦值。

sinh

::mfp::math::trigon::sinh(1) :

函数sinh(x)返回x的双曲正弦值。

size

::mfp::array::size(1) :

size(x)返回矩阵x的尺寸向量。注意如果x不是一个矩阵,则总是返回[]。

::mfp::array::size(2) :

size(x,y)返回矩阵x前y维的尺寸向量,如果x少于y维,返回完整的尺寸向量,注意y必须为正整数。此外如果x不是一个矩阵,则总是返回[]。

sleep

::mfp::system::sleep(1) :

sleep(x)休眠x毫秒(x必须为正实数),此函数不返回任何值。

split

::mfp::string::split(2) :

split(string_input, string_regex)j将字符串string_input按照正则表达式string_regex分割为若干个子字符串并返回包含所有子字符串的数组。用户可以阅读JAVA语言的Pattern类和String.split函数的帮助文档获得更多关于正则表达式使用方法的信息。例子包括split("boo:and:foo", ":")返回["boo", "and", "foo"]以及split("boo:and:foo", "o")返回["b", "", ":and:f"]。

sprintf

::mfp::string::sprintf(1...) :

printf(format_string, ...),sprintf(format_string, ...)和fprintf(fd, format_string, ...)和C/C++中的对应函数工作方式相似。这些函数通过format_string和其后的数值参数构造出一个新的字符串,printf函数将字符串打印到标准输出,sprintf函数将字符串作为返回值返回,fprintf函数则将字符串输出到文件号为fd的文本文件。字符串format_string支持输入整数(%d、%i、%x等),浮点数(%e、%f等),字符和字符串(%c和%s)等等。用户可以在C语言的帮助文档中找到format_string的构造方法。例如,printf("Hello world!%f", 3.14)将会打印输出"Hello world!3.140000",而sprintf("%c%d", "A", 9)则返回"A9"(注意MFP不支持单一字符数据类型,所以单一的字符将会存储为一个只包括一个字符的字符串)。

sqrt

::mfp::math::log_exp::sqrt(1) :

函数sqrt(x)返回实数x的平方根值。

sscanf

::mfp::string::sscanf(2) :

scanf(format_string),sscanf(input_from, format_string)和fscanf(fd, format_string)和C/C++中的对应函数工作方式相似。scanf读取用户的一行输入,sscanf读取字符串input_from,fscanf从文件(文件号fd)中读取文件内容。字符串format_string支持输入整数(%d、%i、%x等),浮点数(%e、%f等),字符和字符串(%c和%s)等等。用户可以在C语言的帮助文档中找到format_string的构造方法。但是,和C语言有所不同,MFP中的这些函数不需要输入用于存储读取数值的参数。所有的读取的数值将会保存在一个数组中作为返回值返回。比如,sscanf("3Hello world!", "%d%c%c%s")将会返回[3, "H", "e", "llo"](注意MFP不支持单一字符数据类型,所以单一的字符将会存储为一个只包括一个字符的字符串)。

start_local_stream

::mfp::multimedia::webrtc_lib::start_local_stream(2) :

此函数开启web RTC本地视频。注意此处的web RTC是指的用于支持声音和视频通信的web RTC函数库,而不是用于支持数据通信的WEBRTC协议栈。这个函数有两个参数。第一个参数是一个显示窗口的句柄。该显示窗口的句柄可以从open_screen_display函数调用中返回。第二个是个是RTC视频输出子窗口在显示窗口的RTC视频输出子窗口序列中的索引(第一个视频输出子窗口的索引值为0,第二个子窗口索引的值是1,以此类推)。这个函数如果调用成功,其返回值是True。否则,本函数返回False。

start_sound

::mfp::multimedia::audio_lib::start_sound(1) :

start_sound(sound_handle)演奏sound_handle所指向的声音文件。如果该声音文件已经启动,这个函数什么也不做。

stdev

::mfp::math::stat_stoch::stdev(0...) :

函数stdev(…)返回任意个数参数的标准差,注意这些参数是一个大的集合中的采样。

stdevp

::mfp::math::stat_stoch::stdevp(0...) :

函数stdevp(…)返回任意个数参数的标准差。

stop_all_sounds

::mfp::multimedia::audio_lib::stop_all_sounds(0) :

stop_all_sounds()停止所有正在播放的声音。

stop_local_stream

::mfp::multimedia::webrtc_lib::stop_local_stream(1) :

此函数关闭web RTC本地视频。注意此处的web RTC是指的用于支持声音和视频通信的web RTC函数库,而不是用于支持数据通信的WEBRTC协议栈。这个函数只有一个参数。该参数是一个显示窗口的句柄。该显示窗口的句柄可以从open_screen_display函数调用中返回。本函数没有返回值。

stop_sound

::mfp::multimedia::audio_lib::stop_sound(1) :

stop_sound(sound_handle)停止sound_handle所代表的声音的播放。如果该声音没有播放,这个函数什么也不做。

strcat

::mfp::string::strcat(2...) :

strcat(string1, string2...)将字符串参数顺次连接在一起,返回新的连接好的字符串。本函数需要至少两个参数。

strcmp

::mfp::string::strcmp(6) :

strcmp(src, dest, src_start, src_end, dest_start, dest_end)比较源字符串src(从src_start到src_end)和目标字符串dest(从dest_start到dest_end)。如果src和dest相等返回0,如果src大于dest返回大于0的值,如果src小于dest返回小于0的值。注意字符串索引从0开始,src_end和dest_end的索引位置为最后一个被选中字符的索引位置加一。另外,最后四个参数可以省略,如果被省略,src_start和dest_start的缺省值为0,src_end和dest_end的缺省值为对应字符串的长度。

strcpy

::mfp::string::strcpy(6) :

strcpy(src, dest, src_start, src_end, dest_start, dest_end)返回将源字符串src从src_start到src_end拷贝到目标字符串dest从dest_start到dest_end的新字符串值。注意字符串索引从0开始,src_end和dest_end的索引位置为最后一个被选中字符的索引位置加一。另外,最后四个参数可以省略,如果被省略,src_start和dest_start的缺省值为0,src_end和dest_end的缺省值为对应字符串的长度。

stricmp

::mfp::string::stricmp(6) :

stricmp(src, dest, src_start, src_end, dest_start, dest_end)在忽略字母大小写的前提下比较源字符串src(从src_start到src_end)和目标字符串dest(从dest_start到dest_end)。如果src和dest相等返回0,如果src大于dest返回大于0的值,如果src小于dest返回小于0的值。注意字符串索引从0开始,src_end和dest_end的索引位置为最后一个被选中字符的索引位置加一。另外,最后四个参数可以省略,如果被省略,src_start和dest_start的缺省值为0,src_end和dest_end的缺省值为对应字符串的长度。

strlen

::mfp::string::strlen(1) :

strlen(x)返回字符串x的长度。

strsub

::mfp::string::strsub(2) :

strsub(str, start)返回字符串str的子字符串。该子字符串从字符start开始到str的最后一个字符。注意字符串的第一个字符是0号字符。

::mfp::string::strsub(3) :

strsub(str, start, end)返回字符串str的子字符串。该子字符串从字符start开始到字符end-1。注意字符串的第一个字符是0号字符。

sum

::mfp::math::stat_stoch::sum(0...) :

函数sum(…)返回任意个数参数的总合。

sum_over

::mfp::math::stat_stoch::sum_over(3) :

函数sum_over(x, y, z)计算基于字符串的表达式x中的变量取值从整数y逐步变化到整数z的值的总合。y和z必须是字符串的形式,其中,y必须写成一个赋值表达式,比如"a=10",这里,a是变量名。一个函数的例子为sum_over("x+1", "x=1", "10")。

suspend_until_cond

::mfp::paracomp::threading::suspend_until_cond(4) :

此函数将挂起当前线程,直到满足特定条件为止。它有四个参数。第一个参数为变量名称。请注意,变量名不是字符串。第二个参数是布尔值。如果为TRUE,则该函数仅在写入变量的值(不必更改)之后才开始检查条件是否满足。否则,函数将在调用函数时立即检查是否满足条件。此参数是可选的。默认情况下为TRUE。第三个参数是运算符字符串。当前此参数仅支持以下值,即"","==","!=",">","<",">="和"<="。""表示如果变量值被写入(未必是被更改),则满足条件。其他运算符意味着使用运算符比较变量的值。如果比较返回TRUE,则满足条件。此参数也是可选的。默认情况下为""。最后一个参数是要比较的值。这也是一个可选参数。如果运算符为"",此参数没有任何作用。对于其他运算符,默认情况下,此参数的值为变量的当前值。例如,suspend_until_cond(a)等于调用suspend_until_cond(a,TRUE,""),这意味着挂起当前线程,直到变量a被另一个线程写入。另一个示例是suspend_until_cond(a,FALSE,"!="),这意味着挂起当前线程,直到变量a的值更改为止。第三个示例是suspend_until_cond(a,TRUE,">=",37),这意味着挂起当前线程,直到写入变量a(不一定更改a的值),并且写入后的值不小于37。如果写入后的值无法和37进行比较,例如a新的值为"Hello",则当前线程仍然被阻塞。

system

::mfp::system::system(1) :

system(str_array)有一个参数。该参数必须是一个字符串或者是一个字符串数组。如果该参数是一个字符串,system运行该字符串所代表的系统指令并且返回该系统指令的返回值。注意系统指令必须是一个可执行的文件以及它的命令参数。由于这个原因,在Windows平台上,诸如system("dir")无法正确执行是因为dir并非是一个单独的可执行文件,而是cmd.exe的一个内部功能。要执行dir指令,用户需要运行system("cmd /c dir")。如果该参数是一个字符串数组,那么该数组的每一个元素是一个将为system函数运行的系统指令的一部分。比如,在Linux平台上,用户想要把文件file1重命名为file2需要运行系统指令"sh -c mv file1 file2",注意由于我们不是在shell中,这里的"sh -c"是不可以省略的。这时,如果要调用system函数执行上述命令,正确的写法是system(["sh", "-c", "mv file1 file2"]),原因是"mv file1 file2"是sh的一个内部指令,它不能够被分割为几个部分。还要注意,在现阶段,这个函数只能将系统指令的输出打印出来,还无法接受在运行中用户对于该系统指令的输入。此外,如果该系统指令不存在,则会抛出异常。

tan

::mfp::math::trigon::tan(1) :

tan(x)返回x的正切值,注意x可以为复数。

tand

::mfp::math::trigon::tand(1) :

tand(x)返回基于角度的x的正切值。

tanh

::mfp::math::trigon::tanh(1) :

函数tanh(x)用于计算x的双曲正切值。

tip

::mfp::misc::tip(2) :

函数tip(x,y)用于计算在美国饭馆吃饭时所支付的所有费用包括实际费用和小费。

to_lowercase_string

::mfp::string::to_lowercase_string(1) :

to_lowercase_string(x)返回数据x的打印值(所有的字母均为小写)。

to_string

::mfp::string::to_string(1) :

to_string(x)返回数据x的打印值。

to_uppercase_string

::mfp::string::to_uppercase_string(1) :

to_uppercase_string(x)返回数据x的打印值(所有的字母均为大写)。

todeg

::mfp::math::trigon::todeg(1) :

函数todeg(x)将弧度x转换为度数值。

torad

::mfp::math::trigon::torad(1) :

函数torad(x)将度数x转换为弧度值。

tostring

::mfp::string::tostring(1) :

tostring(x) 返回数据x的打印值。

trim

::mfp::string::trim(1) :

trim(string),trim_left(string)和trim_right(string)从字符串的两边或者一边删除任何一个ASCI值小于等于空白字符(' ')的字符。具体说来,trim从左右两边删除任何一个ASCI值小于等于空白字符(' ')的字符,直到左边和右边都遇到了一个ASCI值大于空白字符(' ')的字符;trim_left从左边删除任何一个ASCI值小于等于空白字符(' ')的字符,直到遇到了一个ASCI值大于空白字符(' ')的字符;trim_right从右边删除任何一个ASCI值小于等于空白字符(' ')的字符,直到遇到了一个ASCI值大于空白字符(' ')的字符。例子包括trim(" \n hello world ") (返回"hello world"), trim_left(" \n hello world "), (返回"hello world ")以及trim_right(" \n hello world ") (返回" hello world")。

trim_left

::mfp::string::trim_left(1) :

trim(string),trim_left(string)和trim_right(string)从字符串的两边或者一边删除任何一个ASCI值小于等于空白字符(' ')的字符。具体说来,trim从左右两边删除任何一个ASCI值小于等于空白字符(' ')的字符,直到左边和右边都遇到了一个ASCI值大于空白字符(' ')的字符;trim_left从左边删除任何一个ASCI值小于等于空白字符(' ')的字符,直到遇到了一个ASCI值大于空白字符(' ')的字符;trim_right从右边删除任何一个ASCI值小于等于空白字符(' ')的字符,直到遇到了一个ASCI值大于空白字符(' ')的字符。例子包括trim(" \n hello world ") (返回"hello world"), trim_left(" \n hello world "), (返回"hello world ")以及trim_right(" \n hello world ") (返回" hello world")。

trim_right

::mfp::string::trim_right(1) :

trim(string),trim_left(string)和trim_right(string)从字符串的两边或者一边删除任何一个ASCI值小于等于空白字符(' ')的字符。具体说来,trim从左右两边删除任何一个ASCI值小于等于空白字符(' ')的字符,直到左边和右边都遇到了一个ASCI值大于空白字符(' ')的字符;trim_left从左边删除任何一个ASCI值小于等于空白字符(' ')的字符,直到遇到了一个ASCI值大于空白字符(' ')的字符;trim_right从右边删除任何一个ASCI值小于等于空白字符(' ')的字符,直到遇到了一个ASCI值大于空白字符(' ')的字符。例子包括trim(" \n hello world ") (返回"hello world"), trim_left(" \n hello world "), (返回"hello world ")以及trim_right(" \n hello world ") (返回" hello world")。

unlink_video_stream

::mfp::multimedia::webrtc_lib::unlink_video_stream(2...) :

此函数断开视频流向RTC视频输出子窗口的输出。这个函数有两种工作模式。第一种工作模式有3个参数分别为一个显示窗口的句柄(该显示窗口的句柄可以从open_screen_display函数调用中返回);一个peer connection对象的id;以及一个视频轨的id。第二种工作模式有两个参数分别为一个显示窗口的句柄和一个RTC视频输出子窗口在显示窗口的RTC视频输出子窗口序列中的索引(第一个视频输出子窗口的索引值为0,第二个子窗口索引的值是1,以此类推)。这个函数返回断开的视频轨的数目。

update_display

::mfp::graph_lib::display::update_display(1) :

update_display(display)函数刷新一个display。该display既可以是screen display,也可以是image display。

upper_triangular_matrix

::mfp::math::matrix::upper_triangular_matrix(1) :

upper_triangular_matrix(x)返回二维方阵x在LU分解之后的上三角矩阵。

xor

::mfp::math::logic::xor(2) :

函数xor计算x和y的异或值,x和y可以为任何数值。如果x不等于y,返回true。

zeros

::mfp::math::matrix::zeros(1...) :

zeros函数返回一个所有元素都是0的矩阵,本函数的参数用于决定矩阵的尺寸,要么为一批正整数,要么为一个正整数数列。注意函数表达式zeros([])返回常数值0。