Commit Graph

932 Commits

Author SHA1 Message Date
Vadim Pisarevsky
7626a8e8de try to eliminate failure in opencv_imgproc_test 2013-12-02 12:13:50 +04:00
Vadim Pisarevsky
d7f4a223cf fixed several compile errors/warnings; reacted on the PR comments 2013-12-01 20:58:30 +04:00
Vadim Pisarevsky
6da5d21331 fixed many bugs related to Mat::getUMat(), asynchronous kernel execution etc. Also, played a bit with ocl::cvtColor vs cv::cvtColor performance 2013-12-01 03:12:19 +04:00
Ilya Lavrenov
09795e3265 added cv::resize INTER_AREA to T-API 2013-11-29 17:57:37 +04:00
Andrey Pavlenko
d83094b412 Merge pull request #1880 from ilya-lavrenov:tapi_cvtColor 2013-11-29 12:59:09 +04:00
Roman Donchenko
9ca80961fd Merge pull request #1874 from SpecLad:merge-2.4 2013-11-28 16:43:00 +04:00
Ilya Lavrenov
4eba74ee19 added cv::LUT to T-API 2013-11-28 12:31:04 +04:00
Ilya Lavrenov
41d046a2db restored ocl_cvtcolor.cl 2013-11-27 23:46:30 +04:00
Ilya Lavrenov
d2e1318341 RGBA <-> mRGBA 2013-11-27 23:42:10 +04:00
Ilya Lavrenov
f771a0ba81 RGB[A] <-> HLS 2013-11-27 23:37:58 +04:00
Ilya Lavrenov
0b900b54e5 RGB[A] <-> HSV 2013-11-27 23:30:29 +04:00
Ilya Lavrenov
727a5e6df4 BGR5x5 <-> Gray 2013-11-27 22:19:44 +04:00
Ilya Lavrenov
8a23646897 RGB[A] <- RGB5x5 2013-11-27 20:00:35 +04:00
Ilya Lavrenov
81b9c9c104 RGB[A] -> RGB5x5 2013-11-27 19:52:42 +04:00
Ilya Lavrenov
af367c4f85 RGB[A] <-> BGR[A] 2013-11-27 19:44:37 +04:00
Ilya Lavrenov
ab9b883c69 RGB[A] <-> XYZ 2013-11-27 19:37:27 +04:00
Ilya Lavrenov
65ee06eb2b RGB[A] <-> XYZ 2013-11-27 19:25:26 +04:00
Ilya Lavrenov
506c19616d YCrCb -> RGB[A] 2013-11-27 19:24:27 +04:00
Andrey Pavlenko
41ae5d5f66 Merge pull request #1867 from ilya-lavrenov:ocl_resize_master 2013-11-27 18:08:11 +04:00
Roman Donchenko
28242f09d0 Merge pull request #1869 from ilya-lavrenov:ocl_cvtColor_master 2013-11-27 17:58:54 +04:00
Ilya Lavrenov
90d62cacc9 fixed cv::cvtColor 2013-11-27 16:43:31 +04:00
Roman Donchenko
10aec14a4d Merge pull request #1849 from StevenPuttemans:feature_3375_documentation 2013-11-27 13:22:31 +04:00
Ilya Lavrenov
6679aed61e fixed ocl::resize (INTER_LINEAR) and added an accuracy test 2013-11-27 02:52:02 +04:00
Roman Donchenko
920fd48228 Merge remote-tracking branch 'origin/master' into merge-2.4
Conflicts:
	modules/ocl/src/arithm.cpp
2013-11-26 15:32:44 +04:00
Roman Donchenko
9c2272d520 Merge remote-tracking branch 'origin/2.4' into merge-2.4
Conflicts:
	.gitignore
	CMakeLists.txt
	doc/CMakeLists.txt
	modules/calib3d/src/stereosgbm.cpp
	modules/core/include/opencv2/core/mat.hpp
	modules/highgui/src/cap_openni.cpp
	modules/ml/include/opencv2/ml/ml.hpp
	modules/objdetect/src/hog.cpp
	modules/ocl/perf/perf_color.cpp
	modules/ocl/src/arithm.cpp
	modules/ocl/src/filtering.cpp
	modules/ocl/src/imgproc.cpp
	modules/ocl/src/optical_flow_farneback.cpp
	platforms/scripts/camera_build.conf
	platforms/scripts/cmake_android_all_cameras.py
	samples/cpp/Qt_sample/main.cpp
	samples/cpp/tutorial_code/introduction/windows_visual_studio_Opencv/Test.cpp
2013-11-26 15:05:26 +04:00
Roman Donchenko
aaf97c4548 Merge pull request #1863 from nevion:master 2013-11-26 13:53:48 +04:00
Eric Sommerlade
3b4f65b186 fixed comparison to stop integer wrap around 2013-11-26 00:12:30 +00:00
Ilya Lavrenov
16a3067afc cp test_colot.cpp to imgproc ocl tests 2013-11-25 19:19:17 +04:00
StevenPuttemans
6f892b10ff Applied feature #3375 and fix of pull 1842 to avoid merging problems later 2013-11-25 10:53:03 +01:00
Jason Newton
88b2fe9dbb correct upper bound for maximum number of labels for 8-way connectivity 2013-11-24 01:20:07 -08:00
StevenPuttemans
7a8bd31657 Fixed bug in report #3346 2013-11-22 09:57:47 +01:00
Ilya Lavrenov
561a7f5782 fixed kernel compilation in imgproc module 2013-11-21 18:23:57 +04:00
Vadim Pisarevsky
677c7f27cb fixed failure in Tonemap test 2013-11-19 19:20:24 -05:00
Vadim Pisarevsky
241002384c fixed some more compile errors 2013-11-18 14:26:19 -05:00
Vadim Pisarevsky
e2bbe7597b fixed few compile errors and doc build errors 2013-11-18 13:48:04 -05:00
Vadim Pisarevsky
8762ee3f6f removed unnecessary opencl kernels 2013-11-18 12:02:10 -05:00
Vadim Pisarevsky
d914f20a4c updated patch to bring in the first functions with "transparent API" 2013-11-18 11:48:00 -05:00
Roman Donchenko
4f1aed98de Merge remote-tracking branch 'origin/2.4' into merge-2.4
Conflicts:
	.gitignore
	modules/contrib/src/detection_based_tracker.cpp
	modules/core/include/opencv2/core/core.hpp
	modules/core/include/opencv2/core/internal.hpp
	modules/core/src/gpumat.cpp
	modules/core/src/opengl.cpp
	modules/gpu/src/cuda/safe_call.hpp
	modules/highgui/src/cap.cpp
	modules/imgproc/include/opencv2/imgproc/imgproc.hpp
	modules/ocl/doc/image_processing.rst
	modules/ocl/include/opencv2/ocl/ocl.hpp
	modules/ocl/perf/perf_haar.cpp
	modules/ocl/src/haar.cpp
	modules/ocl/src/imgproc.cpp
	modules/ocl/src/kmeans.cpp
	modules/ocl/src/svm.cpp
	modules/ocl/test/test_objdetect.cpp
	samples/ocl/adaptive_bilateral_filter.cpp
2013-11-11 16:55:36 +04:00
Harris Gasparakis
a1de91a4fd Cleaned up adaptive bilateral filtering, added support for gaussian interpolation, updated sample and docs 2013-11-06 16:48:50 +04:00
Roman Donchenko
b5777efee6 Merge pull request #1716 from ilya-lavrenov:resize_area_sse2_fix 2013-11-06 13:59:44 +04:00
Ilya Lavrenov
e9b54ab844 fixed cv::resize (area fast mode) - it writes outside of array boundary in SSE2 version 2013-11-06 13:53:44 +04:00
Roman Donchenko
9c83f6c4fb Merge remote-tracking branch 'origin/2.4' into merge-2.4
Conflicts:
	cmake/OpenCVDetectCUDA.cmake
	modules/core/include/opencv2/core/version.hpp
	modules/cudacodec/src/ffmpeg_video_source.cpp
	modules/gpu/src/video_writer.cpp
	modules/highgui/test/test_ffmpeg.cpp
	modules/highgui/test/test_video_io.cpp
	modules/highgui/test/test_video_pos.cpp
	modules/ocl/include/opencv2/ocl/ocl.hpp
	modules/ocl/include/opencv2/ocl/private/util.hpp
	modules/ocl/src/arithm.cpp
	modules/ocl/src/blend.cpp
	modules/ocl/src/canny.cpp
	modules/ocl/src/cl_operations.cpp
	modules/ocl/src/filtering.cpp
	modules/ocl/src/haar.cpp
	modules/ocl/src/imgproc.cpp
	modules/ocl/src/kmeans.cpp
	modules/ocl/src/moments.cpp
	modules/ocl/src/safe_call.hpp
	modules/ocl/src/split_merge.cpp
	modules/ocl/test/test_moments.cpp
	samples/ocl/squares.cpp
2013-11-05 16:38:23 +04:00
Ilya Lavrenov
5546f4d77f consistency SSE2 and plain versions of convertMaps and remap 2013-11-01 14:50:41 +04:00
Roman Donchenko
03bbee327b Merge pull request #1486 from nzjrs:cv2-logpolar 2013-10-29 16:15:57 +04:00
Andrey Pavlenko
616db74e49 Merge pull request #1663 from vpisarev:ocl_experiments3 2013-10-29 11:14:16 +04:00
Vadim Pisarevsky
ace0d4bad0 hopefully, the last test failures are fixed now 2013-10-24 23:31:00 +04:00
Roman Donchenko
4036f6a3d0 Merge remote-tracking branch 'origin/2.4' into merge-2.4
Conflicts:
	apps/CMakeLists.txt
	modules/contrib/CMakeLists.txt
	modules/core/include/opencv2/core/version.hpp
	modules/imgproc/include/opencv2/imgproc/imgproc.hpp
	modules/java/generator/gen_java.py
	modules/ocl/include/opencv2/ocl/ocl.hpp
	modules/ocl/src/cl_runtime/cl_runtime.cpp
	modules/ocl/src/columnsum.cpp
	modules/ocl/src/filtering.cpp
	modules/ocl/src/imgproc.cpp
	modules/ocl/test/main.cpp
	modules/ocl/test/test_color.cpp
	modules/ocl/test/test_imgproc.cpp
	samples/gpu/CMakeLists.txt
2013-10-22 14:28:00 +04:00
Vadim Pisarevsky
d8c8339bec the first draft of transparent API and new UMat class. more files 2013-10-22 14:05:15 +04:00
Ilya Lavrenov
bebc1c9330 misprint 2013-10-19 22:59:47 +04:00
Alexander Alekhin
e845184843 Merge remote-tracking branch 'upstream/2.4' into merge-2.4
* #1538 from StevenPuttemans:bugfix_3283
* #1545 from alalek:ocl_test_fix_rng
* #1551 from alalek:cmake_install_win
* #1570 from ilya-lavrenov:ipp_warn_fix
* #1573 from alalek:perf_simple_strategy
* #1574 from alalek:svm_workaround
* #1576 from alalek:ocl_fix_cl_double
* #1577 from ilya-lavrenov:ocl_setto_opencl12
* #1578 from asmorkalov:android_fd_cp_fix
* #1579 from ilya-lavrenov:ocl_norm
* #1582 from sperrholz:ocl-arithm-additions
* #1586 from ilya-lavrenov:ocl_setto_win_fix
* #1589 from ilya-lavrenov:pr1582_fix
* #1591 from alalek:ocl_remove_cl_hpp_h
* #1592 from alalek:ocl_program_cache_update
* #1593 from ilya-lavrenov:ocl_war_on_double
* #1594 from ilya-lavrenov:ocl_perf
* #1595 from alalek:cl_code_cleanup
* #1596 from alalek:test_fix_run_py
* #1597 from alalek:ocl_fix_cleanup
* #1598 from alalek:ocl_fix_build_mac
* #1599 from ilya-lavrenov:ocl_mac_kernel_warnings
* #1601 from ilya-lavrenov:ocl_fix_tvl1_and_sparse
* #1602 from alalek:ocl_test_dump_info
* #1603 from ilya-lavrenov:ocl_disable_svm_noblas
* #1605 from alalek:ocl_fixes
* #1606 from ilya-lavrenov:ocl_imgproc
* #1607 from ilya-lavrenov:ocl_fft_cleanup
* #1608 from alalek:fix_warn_upd_haar
* #1609 from ilya-lavrenov:ocl_some_optimization
* #1610 from alalek:ocl_fix_perf_kalman
* #1612 from alalek:ocl_fix_string_info
* #1614 from ilya-lavrenov:ocl_svm_misprint
* #1616 from ilya-lavrenov:ocl_cvtColor
* #1617 from ilya-lavrenov:ocl_info
* #1622 from a0byte:2.4
* #1625 from ilya-lavrenov:to_string

Conflicts:
	cmake/OpenCVConfig.cmake
	cmake/OpenCVDetectPython.cmake
	cmake/OpenCVGenConfig.cmake
	modules/core/CMakeLists.txt
	modules/nonfree/src/surf.ocl.cpp
	modules/ocl/include/opencv2/ocl/ocl.hpp
	modules/ocl/include/opencv2/ocl/private/util.hpp
	modules/ocl/perf/main.cpp
	modules/ocl/src/arithm.cpp
	modules/ocl/src/cl_operations.cpp
	modules/ocl/src/cl_programcache.cpp
	modules/ocl/src/color.cpp
	modules/ocl/src/fft.cpp
	modules/ocl/src/filtering.cpp
	modules/ocl/src/gemm.cpp
	modules/ocl/src/haar.cpp
	modules/ocl/src/imgproc.cpp
	modules/ocl/src/matrix_operations.cpp
	modules/ocl/src/pyrlk.cpp
	modules/ocl/src/split_merge.cpp
	modules/ocl/src/svm.cpp
	modules/ocl/test/main.cpp
	modules/ocl/test/test_fft.cpp
	modules/ocl/test/test_moments.cpp
	modules/ocl/test/test_objdetect.cpp
	modules/ocl/test/test_optflow.cpp
	modules/ocl/test/utility.hpp
	modules/python/CMakeLists.txt
	modules/ts/include/opencv2/ts.hpp
	modules/ts/src/ts_perf.cpp
	samples/android/face-detection/jni/DetectionBasedTracker_jni.cpp
2013-10-15 20:08:52 +04:00
Alexander Alekhin
723af15228 ocl: fix warnings from GCC 4.8, update Haar 2013-10-11 18:42:17 +04:00
Roman Donchenko
685eceb68a Merge pull request #1567 from ilya-lavrenov:warn_fix 2013-10-08 13:50:49 +04:00
Roman Donchenko
895308a811 Merge pull request #1538 from StevenPuttemans:bugfix_3283 2013-10-08 13:00:39 +04:00
Ilya Lavrenov
35d9ce0c0c fixed warnings 2013-10-08 12:46:43 +04:00
Ilya Lavrenov
036e99d03a fixed ipp-related warnings 2013-10-05 14:54:00 +04:00
Roman Donchenko
cca2e5d8b1 Merge pull request #1536 from asmorkalov:android_ndk_r9_master 2013-10-04 16:36:44 +04:00
StevenPuttemans
2f474db27f Fix of bug #3283 and bug #3301
Added extra information for fitEllipse, minAreaRect and addapted ellipse &
ellipse2Poly parameter description.
2013-10-04 11:19:45 +02:00
Alexander Smorkalov
1aaeb52a4c Android NDK r9 support. x64 NDK support fix for MacOS X. 2013-10-03 11:36:12 +04:00
Alexander Smorkalov
ccb48ddee0 Android NDK r9 support. x64 NDK support fix for MacOS X. 2013-10-03 11:23:50 +04:00
Roman Donchenko
30d7e1c33d Merge remote-tracking branch 'origin/master' into merge-2.4
Conflicts:
	doc/tutorials/bioinspired/retina_model/retina_model.rst~
2013-10-02 13:37:33 +04:00
Roman Donchenko
184ae873d4 Merge pull request #1526 from vpisarev:linedetector_python 2013-10-01 19:49:17 +04:00
Roman Donchenko
6133aeede8 Merge branch 'master' into merge-2.4
Conflicts:
	doc/tutorials/definitions/tocDefinitions.rst
2013-10-01 17:37:05 +04:00
Roman Donchenko
81eb4bd8be Merge remote-tracking branch 'origin/2.4'
Conflicts:
	doc/tutorials/features2d/feature_detection/feature_detection.rst
	modules/bioinspired/doc/retina/index.rst
	modules/core/include/opencv2/core/core.hpp
	modules/core/include/opencv2/core/mat.hpp
	modules/core/include/opencv2/core/operations.hpp
	modules/core/src/stat.cpp
	modules/features2d/include/opencv2/features2d/features2d.hpp
	modules/imgproc/src/filter.cpp
	modules/legacy/src/dpstereo.cpp
	modules/nonfree/src/surf.ocl.cpp
	modules/ocl/doc/image_processing.rst
	modules/ocl/doc/object_detection.rst
	modules/ocl/include/opencv2/ocl/ocl.hpp
	modules/ocl/include/opencv2/ocl/private/util.hpp
	modules/ocl/src/arithm.cpp
	modules/ocl/src/canny.cpp
	modules/ocl/src/filtering.cpp
	modules/ocl/src/imgproc.cpp
	modules/ocl/src/initialization.cpp
	modules/ocl/src/matrix_operations.cpp
	modules/ocl/src/pyrdown.cpp
	modules/ocl/src/pyrup.cpp
	modules/ocl/src/split_merge.cpp
	modules/ocl/test/test_objdetect.cpp
	modules/ocl/test/utility.hpp
2013-10-01 15:57:33 +04:00
Nghia Ho
61f5176bad Removed trailing whitespace 2013-10-01 21:03:54 +10:00
John Stowers
51341738ba Add cv::logPolar, cv::linearPolar, and a python example 2013-09-30 22:31:19 +02:00
Vadim Pisarevsky
bc1f9d6268 fixed description of createLineSegmentDetector 2013-09-30 15:07:32 +04:00
Alexander Mordvintsev
20fe614c2f createLineSegmentDetectorPtr -> createLineSegmentDetector in tests and samples 2013-09-30 14:30:01 +04:00
Alexander Mordvintsev
0a8d62e5fd createLineSegmentDetectorPtr -> createLineSegmentDetector 2013-09-30 14:30:01 +04:00
Alexander Mordvintsev
f0b050fa88 exposed LineSegemntDetector to python 2013-09-30 14:30:00 +04:00
Nghia Ho
5921c77613 Merge remote-tracking branch 'upstream/master' 2013-09-26 23:08:23 +10:00
Alexander Smorkalov
4b203f7b1a Merge pull request #1470 from IceRage:min_enclosing_triangle 2013-09-26 16:28:54 +04:00
Nghia Ho
357e5d55f6 Removed trailing whitespaces 2013-09-26 19:14:59 +10:00
Nghia Ho
e6a9c22b9d Merge remote-tracking branch 'upstream/master' 2013-09-26 19:13:01 +10:00
Vadim Pisarevsky
8e7eb79f6e fixed compile errors and warnings when building master branch with IPP enabled 2013-09-20 16:02:15 +04:00
Ovidiu Parvu
2bf36c312f Removed static variables which were not read-only and used more function parameters instead. 2013-09-19 18:32:03 +01:00
Ovidiu Parvu
e324446c70 Changed the signature of the minEnclosingTriangle function such that it returns the area automatically. Moreover, the overloaded function was no longer required so it was removed. Sample code, documentation and unit tests were updated correspondingly. 2013-09-19 16:22:30 +01:00
Ovidiu Parvu
52cdae6e2b Removed the cvMinEnclosingTriangle function since the C API will be deprecated starting with OpenCV 3.0 2013-09-19 15:37:10 +01:00
Ovidiu Parvu
21390d806f Removed non-ASCII characters from the comments 2013-09-19 15:12:07 +01:00
Nghia Ho
8e8ff4dd33 Merge remote-tracking branch 'upstream/master' 2013-09-19 23:58:19 +10:00
Ovidiu Parvu
73f476bd4b Added a namespace and prefixed global variables with "G_" in order to prevent variable shadowing problems. 2013-09-18 15:51:10 +01:00
Ovidiu Parvu
737c5fe781 Updated the return type of the cvMinEnclosingTriangle function in the documentation 2013-09-18 13:09:55 +01:00
Ovidiu Parvu
dc64dd7315 Made the following changes after code inspection (min_enclosing_triangle.cpp):
* Corrected minor typos in comments/function signatures
* Added new details to copyright statement
* Removed unreferenced macros
* Removed the assert statement which was checking the type of the OutputArray triangle
* When returning results using Mat::copyTo instead of Mat::convertTo
* Changed C-style casts to static_casts
* Added division by zero check to distanceFromPointToLine() function
* Updated reference webpages last access dates
* Moved the declaration of the gammaOfA variable outside the while loop in moveAIfLowAndBIfHigh() function for efficiency reasons
2013-09-18 12:21:24 +01:00
Ovidiu Parvu
b570a4ac47 Added the C interface function signature and the overloaded minEnclosingTriangle Python function to the documentation. 2013-09-15 23:40:40 +01:00
Ovidiu Parvu
130b4d8e26 Changed the return type of cvMinEnclosingTriangle to CVAPI(void). Added the implementation of the function to the min_enclosing_triangle.cpp source file. 2013-09-15 23:25:36 +01:00
Ovidiu Parvu
7ac768651f Added the signature cvMinEnclosingTriangle (C version) to the imgproc_c.h header 2013-09-15 22:40:57 +01:00
Ovidiu Parvu
0117d77cd1 Added the tests for the minEnclosingTriangle function in the existing test_convhull.cpp file. 2013-09-15 22:25:58 +01:00
Ovidiu Parvu
caaa9e0f2d - Wrote the documentation for the minEnclosingTriangle function (+1 extra picture depicting a sample output) 2013-09-15 15:07:17 +01:00
Ovidiu Parvu
8bada4c751 Overloaded the minEnclosingTriangle function such that there is an alternative function with the same name which does not require the output parameter ``area''.
Changed the sample source file minarea.cpp to use the overloaded version of the function.
Updated some comments in the min_enclosing_triangle.cpp source file.
2013-09-12 23:47:48 +01:00
Ovidiu Parvu
0ed2f6201d Optimised one assert statement in the min_enclosing_triangle.cpp file. Added the minEnclosingTriangle functionality to the existing minarea.cpp sample file. 2013-09-12 15:01:21 +01:00
Ovidiu Parvu
9902affae6 Added some assert statements to constrain the type of the input and output parameters. Convert the input set of points to vector<Point2f> before passing it to the findMinimumAreaEnclosingTriangle function. 2013-09-12 14:34:08 +01:00
Ovidiu Parvu
4fce8e6b0e Changed the semantics of the minEnclosingTriangle function such that:
1. The function receives a set of points as input instead of a convex polygon with more than three vertices
2. The convex hull P is computed inside the function
3.1. If the number of vertices of P is greater than three then the algorithm which was implemented before executes
3.2. Otherwise the vertices of the triangle are picked from the vertices of the given polygon and the area computed
2013-09-12 13:29:10 +01:00
Ovidiu Parvu
510ad8e779 - Changed the type of the minEnclosingTriangle function parameters by using proxy classes InputArray/OutputArray instead of std::vector<T>
- Adapted the source code to accommodate this change
2013-09-12 10:11:38 +01:00
Roman Donchenko
f31d06f980 Merge pull request #1418 from vpisarev:24_ipp_sepfilter_dft 2013-09-12 12:19:37 +04:00
Ovidiu Parvu
e6b58c4e79 - Added the minEnclosingTriangle function declaration to the imgproc header
- Added the source code for the function in the separate file min_enclosing_triangle.cpp
2013-09-11 18:07:19 +01:00
Roman Donchenko
242e4254f3 Merge pull request #1427 from SpecLad:merge-2.4 2013-09-10 18:28:20 +04:00
Roman Donchenko
95c2e8b51f Merge remote-tracking branch 'origin/2.4' into merge-2.4
Conflicts:
	.gitignore
	doc/tutorials/objdetect/cascade_classifier/cascade_classifier.rst
	modules/gpu/src/match_template.cpp
	modules/imgproc/include/opencv2/imgproc/imgproc.hpp
	modules/ocl/include/opencv2/ocl/ocl.hpp
	modules/ocl/perf/perf_precomp.hpp
2013-09-10 11:30:19 +04:00
Roman Donchenko
4ee5599d4b Merge pull request #1381 from 23pointsNorth:master 2013-09-09 19:53:56 +04:00
Nghia Ho
0e06465a23 Merge remote-tracking branch 'upstream/master' 2013-09-09 23:23:12 +10:00
Roman Donchenko
84435ba741 Merge pull request #1365 from bitwangyaoyao:2.4_bilateral 2013-09-09 16:46:33 +04:00
Vadim Pisarevsky
61f2107829 added IPP optimization of separable 32f filters; fixed IPP version check in DFT; fixed conditions in IPP optimization of norm functions. 2013-09-09 16:13:39 +04:00