diff --git a/Deployment/Licence.txt b/Deployment/Licence.txt index 4bc4625..9b5e401 100644 --- a/Deployment/Licence.txt +++ b/Deployment/Licence.txt @@ -1,165 +1,202 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. \ No newline at end of file + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/Deployment/Setup.NuGet/Build.cmd b/Deployment/Setup.NuGet/Build.cmd index fded2e5..63b6804 100644 --- a/Deployment/Setup.NuGet/Build.cmd +++ b/Deployment/Setup.NuGet/Build.cmd @@ -12,7 +12,7 @@ echo. timeout /T 5 :: Set version info -set version=2.5.6 +set version=3.0.0 set output=%cd%\bin\ :: Create output directory diff --git a/Deployment/Setup.NuGet/Core/Platform.nuspec b/Deployment/Setup.NuGet/Core/Platform.nuspec new file mode 100644 index 0000000..97126f1 --- /dev/null +++ b/Deployment/Setup.NuGet/Core/Platform.nuspec @@ -0,0 +1,32 @@ + + + + + DotImaging.Core.Platform + $version$ + DotImaging.Core.Platform + Darko Jurić + DotImaging + https://raw.githubusercontent.com/dajuric/dot-imaging/master/Deployment/Licence.txt + https://github.com/dajuric/dot-imaging + https://raw.githubusercontent.com/dajuric/dot-imaging/master/Deployment/Logo/logo-small.png + true + + Provides the portable way to determine the execution platform. + For now, .NET 4.5 only! + + + Provides the portable way to determine the execution platform. + Provides some additional platform related interoperability functions. + + execution-platform, OS, portable + + + + + + + + + + \ No newline at end of file diff --git a/Deployment/Setup.NuGet/Core/readmePlatform.txt b/Deployment/Setup.NuGet/Core/readmePlatform.txt new file mode 100644 index 0000000..70f8cbf --- /dev/null +++ b/Deployment/Setup.NuGet/Core/readmePlatform.txt @@ -0,0 +1,12 @@ + Provides the portable way to determine the execution platform. + Provides some additional platform related interoperability functions. + +1) +Console.WriteLine(Platform.RunningPlatform); //Windows, Linux, MacOS + +2) (tried only on Windows) +Platform.AddDllSearchPath(); //adds the "UnmanagedLibraries///" to the path (e.g. UnmanagedLibraries/Windows/x64) + +3) +string pathToFile = @"bin\SomeFolder/SomeFolder2\\yourFile.txt"; +pathtoFile = pathtoFile.NormalizePathDelimiters(); //outputs "bin\\SomeFolder\\SomeFolder2\\yourFile.txt" diff --git a/Deployment/Setup.NuGet/IO/IO.nuspec b/Deployment/Setup.NuGet/IO/IO.nuspec index 3441758..f782a52 100644 --- a/Deployment/Setup.NuGet/IO/IO.nuspec +++ b/Deployment/Setup.NuGet/IO/IO.nuspec @@ -1,49 +1,48 @@ - - - - - DotImaging.IO - $version$ - DotImaging.IO - Darko Jurić - DotImaging - https://raw.githubusercontent.com/dajuric/dot-imaging/master/Deployment/Licence.txt - https://github.com/dajuric/dot-imaging - https://raw.githubusercontent.com/dajuric/dot-imaging/master/Deployment/Logo/logo-small.png - true - - Provides unified API for IO video access: web-camera support, various video-format reading / writing, image-directory reader and functions for image reading and writing. - All operations on image streams are standard stream operations and do not depend on actual video source. - The library is made in platform-abstract fashion. - - Provides unified API for IO video and image access. - video-capture image-IO - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + DotImaging.IO + $version$ + DotImaging.IO + Darko Jurić + DotImaging + https://raw.githubusercontent.com/dajuric/dot-imaging/master/Deployment/Licence.txt + https://github.com/dajuric/dot-imaging + https://raw.githubusercontent.com/dajuric/dot-imaging/master/Deployment/Logo/logo-small.png + true + + Unified stream-like platform-abstract API for IO video access: web-camera support, various video-format reading / writing, image-directory reader. + Image loading/saving (file or in-memory). + + Loading and saving images and image streams (file, in-memory, camera, video, directory). + image-encode, image-decode, image-load, image-save, image-directory, camera-capture, multiple-camera-capture, video-capture, video-write + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Deployment/Setup.NuGet/IO/readmeIO.txt b/Deployment/Setup.NuGet/IO/readmeIO.txt index 8541308..b4881e5 100644 --- a/Deployment/Setup.NuGet/IO/readmeIO.txt +++ b/Deployment/Setup.NuGet/IO/readmeIO.txt @@ -1,41 +1,47 @@ -Provides unified API for IO video access: web-camera support, various video-format reading / writing, image-directory reader and functions for image reading and writing. -All operations on image streams are standard stream operations and do not depend on actual video source. -The library is made in platform-abstract fashion. - -1) image loading / saving: - - Bgr[,] image = ImageIO.LoadColor("sample.jpg"); //load Bgr color image - Gray[,] hdrImage = (ImageIO.LoadUnchanged("hdrImage.png") as Image>).Clone(); //load HDR grayscale (or any other) image - - image.Save("image.png"); - - -2) media (camera, video, image-directory) capture: - - ImageStreamReader reader = new CameraCapture(); //use specific class for device-specific properties (e.g. exposure, image name, ...) - reader.Open(); - - //read single frame - var frame = reader.ReadAs>(); - - //read the rest of images (do not do that with the CameraCapture :) ) - foreach(var image in reader) - { - //do something with the image - } - - reader.Close(); - -3) video writer: - - ImageStreamWriter videoWriter = new VideoWriter("out.avi", new Size(1280, 1024)); - - var image = new Bgr[1024, 1280]; - videoWriter.Write(image.Lock()); //write a single frame - - videoWriter.Close(); - - -Discover more types as you type :) - - +Unified stream-like platform-abstract API for IO video access: web-camera support, various video-format reading / writing, image-directory reader. +Image loading/saving (file or in-memory). + +1) image loading / saving: + + Bgr[,] image = ImageIO.LoadColor("sample.jpg"); //load Bgr color image + Gray[,] hdrImage = (ImageIO.LoadUnchanged("hdrImage.png") as Image>).Clone(); //load HDR grayscale (or any other) image + image.Save("image.png"); + + +2) image in-memory encoding / decoding + + Bgr[,] bgrIm = ImageIO.LoadColor("sample.jpg"); + byte[] encodedBgr = bgrIm.EncodeAsJpeg(); //or png, bmp + Bgr[,] decodedBgr = encodedBgr.DecodeAsColorImage(); + + +3) media (camera, video, image-directory) capture: + + ImageStreamReader reader = new CameraCapture(); //use specific class for device-specific properties (e.g. exposure, image name, ...) + reader.Open(); + + //read single frame + var frame = reader.ReadAs>(); + + //read the rest of images (do not do that with the CameraCapture :) ) + foreach(var image in reader) + { + //do something with the image + } + + reader.Close(); + + +4) video writer: + + ImageStreamWriter videoWriter = new VideoWriter("out.avi", new Size(1280, 1024)); + + var image = new Bgr[1024, 1280]; + videoWriter.Write(image.Lock()); //write a single frame + + videoWriter.Close(); + + +Discover more types as you type :) + + diff --git a/Deployment/Setup.NuGet/Setup.NuGet.csproj b/Deployment/Setup.NuGet/Setup.NuGet.csproj index 34a3687..d837c80 100644 --- a/Deployment/Setup.NuGet/Setup.NuGet.csproj +++ b/Deployment/Setup.NuGet/Setup.NuGet.csproj @@ -1,81 +1,85 @@ - - - - - Debug - AnyCPU - {131A083D-F12A-48FA-8A7D-381C6B5C222D} - Library - Properties - Setup.NuGet - Setup.NuGet - v4.5 - 512 - - - true - full - false - bin\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\ - TRACE - prompt - 4 - - - - - - Designer - - - - - Designer - - - Designer - - - Designer - - - Designer - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + AnyCPU + {131A083D-F12A-48FA-8A7D-381C6B5C222D} + Library + Properties + Setup.NuGet + Setup.NuGet + v4.5 + 512 + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + + + Designer + + + Designer + + + + + Designer + + + Designer + + + Designer + + + Designer + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DotImaging.sln b/DotImaging.sln index e083f15..d87b802 100644 --- a/DotImaging.sln +++ b/DotImaging.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.31101.0 +# Visual Studio 14 +VisualStudioVersion = 14.0.23107.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Source", "Source", "{80058A54-6223-480C-AA19-F99E7AE593F3}" EndProject @@ -64,6 +64,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{5A6626 .nuget\NuGet.targets = .nuget\NuGet.targets EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultipleCameraCapture", "Samples\MultipleCameraCapture\MultipleCameraCapture.csproj", "{C30A145E-02FB-49B4-8F3E-6673AF9D121A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -126,6 +128,10 @@ Global {F46115E9-C4FC-4355-93AE-BE8E96B236C9}.Debug|Any CPU.Build.0 = Debug|Any CPU {F46115E9-C4FC-4355-93AE-BE8E96B236C9}.Release|Any CPU.ActiveCfg = Release|Any CPU {F46115E9-C4FC-4355-93AE-BE8E96B236C9}.Release|Any CPU.Build.0 = Release|Any CPU + {C30A145E-02FB-49B4-8F3E-6673AF9D121A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C30A145E-02FB-49B4-8F3E-6673AF9D121A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C30A145E-02FB-49B4-8F3E-6673AF9D121A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C30A145E-02FB-49B4-8F3E-6673AF9D121A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -146,5 +152,6 @@ Global {8F4ADF98-76E1-4893-A458-486542EED521} = {80058A54-6223-480C-AA19-F99E7AE593F3} {D5767A78-E50A-4B5D-94F5-44A59B87F944} = {80058A54-6223-480C-AA19-F99E7AE593F3} {F46115E9-C4FC-4355-93AE-BE8E96B236C9} = {80058A54-6223-480C-AA19-F99E7AE593F3} + {C30A145E-02FB-49B4-8F3E-6673AF9D121A} = {05BDC895-7F7B-4B6F-8D69-E7916837092D} EndGlobalSection EndGlobal diff --git a/README.md b/README.md index 961c4e5..b357566 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

Build passing - NuGet packages version + NuGet packages version

**DotImaging** - .NET array as imaging object diff --git a/Samples/Capture/CaptureDemo.cs b/Samples/Capture/CaptureDemo.cs index b4acbdc..6a96634 100644 --- a/Samples/Capture/CaptureDemo.cs +++ b/Samples/Capture/CaptureDemo.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -56,10 +55,10 @@ void capture_NewFrame(object sender, EventArgs e) if (frame == null) { - /*Application.Idle -= capture_NewFrame; - return;*/ - reader.Seek(0, SeekOrigin.Begin); + Application.Idle -= capture_NewFrame; return; + /*reader.Seek(0, SeekOrigin.Begin); + return;*/ } this.pictureBox.Image = frame.ToBitmap(); diff --git a/Samples/Capture/Program.cs b/Samples/Capture/Program.cs index f679f4b..fa104e4 100644 --- a/Samples/Capture/Program.cs +++ b/Samples/Capture/Program.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Samples/Capture/Properties/AssemblyInfo.cs b/Samples/Capture/Properties/AssemblyInfo.cs index 3527617..32a17e1 100644 --- a/Samples/Capture/Properties/AssemblyInfo.cs +++ b/Samples/Capture/Properties/AssemblyInfo.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Samples/CaptureAndRecording/CaptureAndRecordingDemo.cs b/Samples/CaptureAndRecording/CaptureAndRecordingDemo.cs index 195bc98..c86c1ef 100644 --- a/Samples/CaptureAndRecording/CaptureAndRecordingDemo.cs +++ b/Samples/CaptureAndRecording/CaptureAndRecordingDemo.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Samples/CaptureAndRecording/Program.cs b/Samples/CaptureAndRecording/Program.cs index 578d5bb..90fd5bd 100644 --- a/Samples/CaptureAndRecording/Program.cs +++ b/Samples/CaptureAndRecording/Program.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Samples/CaptureAndRecording/Properties/AssemblyInfo.cs b/Samples/CaptureAndRecording/Properties/AssemblyInfo.cs index 1d88e75..bcf3694 100644 --- a/Samples/CaptureAndRecording/Properties/AssemblyInfo.cs +++ b/Samples/CaptureAndRecording/Properties/AssemblyInfo.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Samples/GenericImageInteropDemo/Program.cs b/Samples/GenericImageInteropDemo/Program.cs index f31822f..2faf8c5 100644 --- a/Samples/GenericImageInteropDemo/Program.cs +++ b/Samples/GenericImageInteropDemo/Program.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -49,7 +48,7 @@ static void Main(string[] args) IplImage iplImage; using (var uImg = img.Lock()) { - iplImage = uImg.AsOpenCvImage(); //data is shared + iplImage = uImg.AsCvIplImage(); //data is shared } //from IplImage var imgFromIpl = iplImage.AsImage(); diff --git a/Samples/GenericImageInteropDemo/Properties/AssemblyInfo.cs b/Samples/GenericImageInteropDemo/Properties/AssemblyInfo.cs index 9d1e567..ef4cd89 100644 --- a/Samples/GenericImageInteropDemo/Properties/AssemblyInfo.cs +++ b/Samples/GenericImageInteropDemo/Properties/AssemblyInfo.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Samples/ImageExtractor/Program.cs b/Samples/ImageExtractor/Program.cs index 9a82da8..1011439 100644 --- a/Samples/ImageExtractor/Program.cs +++ b/Samples/ImageExtractor/Program.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Samples/ImageExtractor/Properties/AssemblyInfo.cs b/Samples/ImageExtractor/Properties/AssemblyInfo.cs index 9ef7305..ff5a513 100644 --- a/Samples/ImageExtractor/Properties/AssemblyInfo.cs +++ b/Samples/ImageExtractor/Properties/AssemblyInfo.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Samples/MultipleCameraCapture/App.config b/Samples/MultipleCameraCapture/App.config new file mode 100644 index 0000000..d740e88 --- /dev/null +++ b/Samples/MultipleCameraCapture/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Samples/MultipleCameraCapture/CaptureWindow.Designer.cs b/Samples/MultipleCameraCapture/CaptureWindow.Designer.cs new file mode 100644 index 0000000..902db3a --- /dev/null +++ b/Samples/MultipleCameraCapture/CaptureWindow.Designer.cs @@ -0,0 +1,67 @@ +namespace MultipleCameraCapture +{ + partial class CaptureWindow + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.pictureBox = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); + this.SuspendLayout(); + // + // pictureBox + // + this.pictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.pictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pictureBox.Location = new System.Drawing.Point(7, 3); + this.pictureBox.Margin = new System.Windows.Forms.Padding(2); + this.pictureBox.Name = "pictureBox"; + this.pictureBox.Size = new System.Drawing.Size(640, 480); + this.pictureBox.TabIndex = 3; + this.pictureBox.TabStop = false; + // + // CaptureDemo + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(653, 489); + this.Controls.Add(this.pictureBox); + this.Name = "CaptureDemo"; + this.Text = "Capture Demo"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.CaptureDemo_FormClosing); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.PictureBox pictureBox; + } +} + diff --git a/Samples/MultipleCameraCapture/CaptureWindow.cs b/Samples/MultipleCameraCapture/CaptureWindow.cs new file mode 100644 index 0000000..7f0f56f --- /dev/null +++ b/Samples/MultipleCameraCapture/CaptureWindow.cs @@ -0,0 +1,69 @@ +#region Licence and Terms +// DotImaging Framework +// https://github.com/dajuric/dot-imaging +// +// Copyright © Darko Jurić, 2014-2015 +// darko.juric2@gmail.com +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#endregion + +using DotImaging; +using System; +using System.Windows.Forms; +using DotImaging.Primitives2D; + +namespace MultipleCameraCapture +{ + public partial class CaptureWindow : Form + { + CameraCapture reader; + + public CaptureWindow(int cameraIndex = -1) + { + InitializeComponent(); + pictureBox.SizeMode = PictureBoxSizeMode.Zoom; + if (cameraIndex == -1) + return; + + reader = new CameraCapture(cameraIndex); + reader.FrameSize = new Size(640, 480); + reader.Open(); + + this.Text = "Camera " + cameraIndex; + Application.Idle += capture_NewFrame; + } + + Bgr[,] frame = null; + void capture_NewFrame(object sender, EventArgs e) + { + reader.ReadTo>(ref frame); + + if (frame == null) + { + Application.Idle -= capture_NewFrame; + return; + } + + this.pictureBox.Image = frame.ToBitmap(); + GC.Collect(); + } + + private void CaptureDemo_FormClosing(object sender, FormClosingEventArgs e) + { + if (reader != null) + reader.Dispose(); + } + } +} diff --git a/Samples/MultipleCameraCapture/MultipleCameraCapture.csproj b/Samples/MultipleCameraCapture/MultipleCameraCapture.csproj new file mode 100644 index 0000000..9573088 --- /dev/null +++ b/Samples/MultipleCameraCapture/MultipleCameraCapture.csproj @@ -0,0 +1,110 @@ + + + + + Debug + AnyCPU + {C30A145E-02FB-49B4-8F3E-6673AF9D121A} + WinExe + Properties + MultipleCameraCapture + MultipleCameraCapture + v4.5.2 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + + + + + + + + + + + + + + + + Form + + + CaptureWindow.cs + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {ce222a84-b03b-4053-8ba4-f237063382f2} + BitmapInterop + + + {3cf8f155-3da1-4529-9b28-d409e86ed4e2} + GenericImage + + + {ed70a44e-9443-4a28-9b95-31299f8b2d08} + IO + + + {d5767a78-e50a-4b5d-94f5-44a59b87f944} + Primitives2D + + + + + \ No newline at end of file diff --git a/Samples/MultipleCameraCapture/Program.cs b/Samples/MultipleCameraCapture/Program.cs new file mode 100644 index 0000000..544369c --- /dev/null +++ b/Samples/MultipleCameraCapture/Program.cs @@ -0,0 +1,57 @@ +using System; +using System.Windows.Forms; +using DotImaging; +using System.Collections.Generic; + +namespace MultipleCameraCapture +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + + var activeForms = new List
(); + + var cameraCount = CameraCapture.CameraCount; + for (int camIdx = 0; camIdx < cameraCount; camIdx++) + { + var activeForm = new CaptureWindow(camIdx); + activeForms.Add(activeForm); + } + + if (cameraCount == 0) + { + MessageBox.Show("No camera device is present."); + return; + } + + Application.Run(new MultiFormApplicationContext(activeForms)); + } + + class MultiFormApplicationContext : ApplicationContext + { + private void onFormClosed(object sender, EventArgs e) + { + if (Application.OpenForms.Count == 0) + { + ExitThread(); + } + } + + public MultiFormApplicationContext(IEnumerable forms) + { + foreach (var form in forms) + { + form.Show(); + form.FormClosed += onFormClosed; + } + } + } + } +} diff --git a/Samples/MultipleCameraCapture/Properties/AssemblyInfo.cs b/Samples/MultipleCameraCapture/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..02dfd1d --- /dev/null +++ b/Samples/MultipleCameraCapture/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MultipleCameraCapture")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MultipleCameraCapture")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c30a145e-02fb-49b4-8f3e-6673af9d121a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Samples/MultipleCameraCapture/Properties/Resources.Designer.cs b/Samples/MultipleCameraCapture/Properties/Resources.Designer.cs new file mode 100644 index 0000000..ef4ac0b --- /dev/null +++ b/Samples/MultipleCameraCapture/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace MultipleCameraCapture.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MultipleCameraCapture.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Samples/MultipleCameraCapture/Properties/Resources.resx b/Samples/MultipleCameraCapture/Properties/Resources.resx new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ b/Samples/MultipleCameraCapture/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Samples/MultipleCameraCapture/Properties/Settings.Designer.cs b/Samples/MultipleCameraCapture/Properties/Settings.Designer.cs new file mode 100644 index 0000000..10e01ef --- /dev/null +++ b/Samples/MultipleCameraCapture/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace MultipleCameraCapture.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Samples/MultipleCameraCapture/Properties/Settings.settings b/Samples/MultipleCameraCapture/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/Samples/MultipleCameraCapture/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Source/BitmapInterop/BitmapConversion.cs b/Source/BitmapInterop/BitmapConversion.cs index 4fb5702..7822880 100644 --- a/Source/BitmapInterop/BitmapConversion.cs +++ b/Source/BitmapInterop/BitmapConversion.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -85,9 +84,9 @@ public static Array ToArray(this Bitmap bmp) } /// - /// Loads an Bgra image from the specified image array. + /// Loads an Bgra image from the specified Bitmap. /// - /// Image 2D array. The Bgra, Bgr and Gray 2D byte arrays are supported. + /// Bgra, Bgr or Gray type bitmap. /// Bgra image. public static Bgra[,] ToBgra(this Bitmap bitmap) { diff --git a/Source/BitmapInterop/BmpSaveExtensions.cs b/Source/BitmapInterop/BmpSaveExtensions.cs index d37f259..e0ff5d1 100644 --- a/Source/BitmapInterop/BmpSaveExtensions.cs +++ b/Source/BitmapInterop/BmpSaveExtensions.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/BitmapInterop/ColorExtensions.cs b/Source/BitmapInterop/ColorExtensions.cs index f7df7fe..60b473f 100644 --- a/Source/BitmapInterop/ColorExtensions.cs +++ b/Source/BitmapInterop/ColorExtensions.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/BitmapInterop/DrawingStructureConversions.cs b/Source/BitmapInterop/DrawingStructureConversions.cs index ab8e8e6..1e2eff9 100644 --- a/Source/BitmapInterop/DrawingStructureConversions.cs +++ b/Source/BitmapInterop/DrawingStructureConversions.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -32,29 +31,29 @@ public static class DrawingStructureConversions #region Point conversions /// - /// Converts to the . + /// Converts to the . /// /// - /// + /// public static Point ToPt(this System.Drawing.Point point) { return new Point(point.X, point.Y); } /// - /// Converts to the . + /// Converts to the . /// /// - /// + /// public static PointF ToPt(this System.Drawing.PointF point) { return new PointF(point.X, point.Y); } /// - /// Converts to to the . + /// Converts to to the . /// - /// + /// /// public static System.Drawing.Point ToPt(this Point point) { @@ -62,9 +61,9 @@ public static System.Drawing.Point ToPt(this Point point) } /// - /// Converts to to the . + /// Converts to to the . /// - /// + /// /// public static System.Drawing.PointF ToPt(this PointF point) { @@ -76,29 +75,29 @@ public static System.Drawing.PointF ToPt(this PointF point) #region Rectangle conversions /// - /// Converts the to the . + /// Converts the to the . /// /// - /// + /// public static Rectangle ToRect(this System.Drawing.Rectangle rect) { return new Rectangle(rect.X, rect.Y, rect.Width, rect.Height); } /// - /// Converts the to the . + /// Converts the to the . /// /// - /// + /// public static RectangleF ToRect(this System.Drawing.RectangleF rect) { return new RectangleF(rect.X, rect.Y, rect.Width, rect.Height); } /// - /// Converts the to the . + /// Converts the to the . /// - /// + /// /// public static System.Drawing.Rectangle ToRect(this Rectangle rect) { @@ -106,9 +105,9 @@ public static System.Drawing.Rectangle ToRect(this Rectangle rect) } /// - /// Converts the to the . + /// Converts the to the . /// - /// + /// /// public static System.Drawing.RectangleF ToRect(this RectangleF rect) { @@ -120,29 +119,29 @@ public static System.Drawing.RectangleF ToRect(this RectangleF rect) #region Size conversions /// - /// Converts the to the . + /// Converts the to the . /// /// - /// + /// public static Size ToSize(this System.Drawing.Size size) { return new Size(size.Width, size.Height); } /// - /// Converts the to the . + /// Converts the to the . /// /// - /// + /// public static SizeF ToSize(this System.Drawing.SizeF size) { return new SizeF(size.Width, size.Height); } /// - /// Converts the to the . + /// Converts the to the . /// - /// + /// /// public static System.Drawing.Size ToSize(this Size size) { @@ -150,9 +149,9 @@ public static System.Drawing.Size ToSize(this Size size) } /// - /// Converts the to the . + /// Converts the to the . /// - /// + /// /// public static System.Drawing.SizeF ToSize(this SizeF size) { diff --git a/Source/Core/Caching/MethodCache.cs b/Source/Core/Caching/MethodCache.cs index f3b06ff..ac7e6ab 100644 --- a/Source/Core/Caching/MethodCache.cs +++ b/Source/Core/Caching/MethodCache.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Core/Extensions/PathExtensions.cs b/Source/Core/Extensions/PathExtensions.cs index 7da3a5f..35ba986 100644 --- a/Source/Core/Extensions/PathExtensions.cs +++ b/Source/Core/Extensions/PathExtensions.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -110,30 +109,6 @@ public static string GetRelativeFilePath(this string fileName, DirectoryInfo dir return (Path.DirectorySeparatorChar + relativeFilePath).NormalizePathDelimiters(); } - /// - /// Replaces path delimiters with platform-specific one defined in . - /// - /// Path to replace delimiters. - /// Path with replaced delimiters. - public static string NormalizePathDelimiters(this string path) - { - return NormalizePathDelimiters(path, Path.DirectorySeparatorChar.ToString()); - } - - /// - /// Replaces path delimiters with specified one. - /// - /// Path to replace delimiters. - /// Replacing delimiter. - /// Path with replaced delimiters. - public static string NormalizePathDelimiters(this string path, string normalizedDelimiter) - { - return path.Replace("//", normalizedDelimiter) - .Replace(@"\", normalizedDelimiter) - .Replace(@"\\", normalizedDelimiter) - .Replace(@"/" , normalizedDelimiter); - } - /// /// Checks whether the path is file or directory. /// diff --git a/Source/Core/NaturalSortComparer.cs b/Source/Core/NaturalSortComparer.cs index 7d61615..6d86865 100644 --- a/Source/Core/NaturalSortComparer.cs +++ b/Source/Core/NaturalSortComparer.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Core/Platform.cs b/Source/Core/Platform.cs index 710c2f5..37a8427 100644 --- a/Source/Core/Platform.cs +++ b/Source/Core/Platform.cs @@ -2,27 +2,25 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion using System; using System.IO; -using System.Runtime.InteropServices; namespace DotImaging { @@ -178,5 +176,29 @@ public static String GetModuleFormatString() return formatString; } + + /// + /// Replaces path delimiters with platform-specific one defined in . + /// + /// Path to replace delimiters. + /// Path with replaced delimiters. + public static string NormalizePathDelimiters(this string path) + { + return NormalizePathDelimiters(path, Path.DirectorySeparatorChar.ToString()); + } + + /// + /// Replaces path delimiters with specified one. + /// + /// Path to replace delimiters. + /// Replacing delimiter. + /// Path with replaced delimiters. + public static string NormalizePathDelimiters(this string path, string normalizedDelimiter) + { + return path.Replace("//", normalizedDelimiter) + .Replace(@"\", normalizedDelimiter) + .Replace(@"\\", normalizedDelimiter) + .Replace(@"/", normalizedDelimiter); + } } } diff --git a/Source/Core/Properties/AssemblyInfo.cs b/Source/Core/Properties/AssemblyInfo.cs index c3087ea..d579faf 100644 --- a/Source/Core/Properties/AssemblyInfo.cs +++ b/Source/Core/Properties/AssemblyInfo.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Drawing/Base/CvCoreInvoke.cs b/Source/Drawing/Base/CvCoreInvoke.cs index 231fdbc..ed6d802 100644 --- a/Source/Drawing/Base/CvCoreInvoke.cs +++ b/Source/Drawing/Base/CvCoreInvoke.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Drawing/Drawing.cs b/Source/Drawing/Drawing.cs index 71f13bf..99bcd3a 100644 --- a/Source/Drawing/Drawing.cs +++ b/Source/Drawing/Drawing.cs @@ -1,4 +1,24 @@ - +#region Licence and Terms +// DotImaging Framework +// https://github.com/dajuric/dot-imaging +// +// Copyright © Darko Jurić, 2014-2015 +// darko.juric2@gmail.com +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#endregion + using System; using System.Collections.Generic; using System.Runtime.InteropServices; @@ -44,7 +64,7 @@ public unsafe static void Draw(this Bgr[,] image, Rectangle rect, Bgr[,] image, string text, Font font, { using(var img = image.Lock()) { - var iplImage = img.AsOpenCvImage(); + var iplImage = img.AsCvIplImage(); CvCoreInvoke.cvPutText(&iplImage, text, botomLeftPoint, ref font, color.ToCvScalar()); } } @@ -92,7 +112,7 @@ public unsafe static void Draw(this Bgr[,] image, Box2D box, Bgr col using(var img = image.Lock()) { - var iplImage = img.AsOpenCvImage(); + var iplImage = img.AsCvIplImage(); for (int i = 0; i < vertices.Length; i++) { @@ -116,7 +136,7 @@ public unsafe static void Draw(this Bgr[,] image, Ellipse ellipse, Bgr[,] image, Point[] contour, Bgr[,] image, Circle circle, Bgr { using(var img = image.Lock()) { - var iplImage = img.AsOpenCvImage(); + var iplImage = img.AsCvIplImage(); var center = new Point(circle.X, circle.Y); CvCoreInvoke.cvCircle(&iplImage, center, circle.Radius, color.ToCvScalar(), @@ -184,7 +204,7 @@ public unsafe static void Draw(this Bgr[,] image, IEnumerable circ { using(var img = image.Lock()) { - var iplImage = img.AsOpenCvImage(); + var iplImage = img.AsCvIplImage(); foreach (var circle in circles) { diff --git a/Source/GenericImage/ColorTypeConversions/ColorInfo.cs b/Source/GenericImage/ColorTypeConversions/ColorInfo.cs index 23cdaa5..0a9bbe2 100644 --- a/Source/GenericImage/ColorTypeConversions/ColorInfo.cs +++ b/Source/GenericImage/ColorTypeConversions/ColorInfo.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/ColorTypeConversions/ColorSpaces/Bgr.cs b/Source/GenericImage/ColorTypeConversions/ColorSpaces/Bgr.cs index c6c5cc8..1b28380 100644 --- a/Source/GenericImage/ColorTypeConversions/ColorSpaces/Bgr.cs +++ b/Source/GenericImage/ColorTypeConversions/ColorSpaces/Bgr.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -198,8 +197,16 @@ public static void Convert(Bgr bgr, ref Hsv hsv) } } + /// + /// Provides extension conversion methods for 8-bit Bgr type. + /// public static class BgrColorConversionExtensions { + /// + /// Converts 8-bit Bgr color to 8-bit gray. + /// + /// 8-bit Bgr color. + /// 8-bit gray [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Gray ToGray(this Bgr bgr) { @@ -208,6 +215,11 @@ public static Gray ToGray(this Bgr bgr) return gray; } + /// + /// Converts 8-bit Bgr color to 8-bit Hsv color. + /// + /// 8-bit Bgr color. + /// 8-bit Hsv color. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Hsv ToHsv(this Bgr bgr) { diff --git a/Source/GenericImage/ColorTypeConversions/ColorSpaces/Bgra.cs b/Source/GenericImage/ColorTypeConversions/ColorSpaces/Bgra.cs index 310bc63..2ba4680 100644 --- a/Source/GenericImage/ColorTypeConversions/ColorSpaces/Bgra.cs +++ b/Source/GenericImage/ColorTypeConversions/ColorSpaces/Bgra.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/ColorTypeConversions/ColorSpaces/Gray.cs b/Source/GenericImage/ColorTypeConversions/ColorSpaces/Gray.cs index 1b27060..0bf16f1 100644 --- a/Source/GenericImage/ColorTypeConversions/ColorSpaces/Gray.cs +++ b/Source/GenericImage/ColorTypeConversions/ColorSpaces/Gray.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/ColorTypeConversions/ColorSpaces/Hsv.cs b/Source/GenericImage/ColorTypeConversions/ColorSpaces/Hsv.cs index da07fe1..d3c36c5 100644 --- a/Source/GenericImage/ColorTypeConversions/ColorSpaces/Hsv.cs +++ b/Source/GenericImage/ColorTypeConversions/ColorSpaces/Hsv.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/ColorTypeConversions/ColorSpaces/IColor.cs b/Source/GenericImage/ColorTypeConversions/ColorSpaces/IColor.cs index 78cce8b..7d6cec7 100644 --- a/Source/GenericImage/ColorTypeConversions/ColorSpaces/IColor.cs +++ b/Source/GenericImage/ColorTypeConversions/ColorSpaces/IColor.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/ColorTypeConversions/ColorSpaces/Rgb.cs b/Source/GenericImage/ColorTypeConversions/ColorSpaces/Rgb.cs index b093ccf..567bfba 100644 --- a/Source/GenericImage/ColorTypeConversions/ColorSpaces/Rgb.cs +++ b/Source/GenericImage/ColorTypeConversions/ColorSpaces/Rgb.cs @@ -5,18 +5,17 @@ // Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -84,8 +83,8 @@ public override string ToString() /// /// Converts 8-bit Rgb to 8-bit Bgr. /// - /// Source color. - /// Destination color. + /// Source color. + /// Destination color. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void Convert(Rgb rgb, ref Bgr bgr) { diff --git a/Source/GenericImage/ColorTypeConversions/Converters/ColorConversionExtensions.cs b/Source/GenericImage/ColorTypeConversions/Converters/ColorConversionExtensions.cs index 62fcfdc..bdf179b 100644 --- a/Source/GenericImage/ColorTypeConversions/Converters/ColorConversionExtensions.cs +++ b/Source/GenericImage/ColorTypeConversions/Converters/ColorConversionExtensions.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/ColorTypeConversions/Converters/PrimitiveChannelTypeConversion.cs b/Source/GenericImage/ColorTypeConversions/Converters/PrimitiveChannelTypeConversion.cs index a303616..060e30e 100644 --- a/Source/GenericImage/ColorTypeConversions/Converters/PrimitiveChannelTypeConversion.cs +++ b/Source/GenericImage/ColorTypeConversions/Converters/PrimitiveChannelTypeConversion.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/Extensions/BasicExtensions.cs b/Source/GenericImage/Extensions/BasicExtensions.cs index 8938377..753c723 100644 --- a/Source/GenericImage/Extensions/BasicExtensions.cs +++ b/Source/GenericImage/Extensions/BasicExtensions.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/Extensions/ChannelMerger.cs b/Source/GenericImage/Extensions/ChannelMerger.cs index 30be7cf..be8e33c 100644 --- a/Source/GenericImage/Extensions/ChannelMerger.cs +++ b/Source/GenericImage/Extensions/ChannelMerger.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/Extensions/ChannelSplitter.cs b/Source/GenericImage/Extensions/ChannelSplitter.cs index 16cf38d..80edf1c 100644 --- a/Source/GenericImage/Extensions/ChannelSplitter.cs +++ b/Source/GenericImage/Extensions/ChannelSplitter.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/Extensions/Convert.cs b/Source/GenericImage/Extensions/Convert.cs index 4d40f7f..9291166 100644 --- a/Source/GenericImage/Extensions/Convert.cs +++ b/Source/GenericImage/Extensions/Convert.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/Extensions/Copy.cs b/Source/GenericImage/Extensions/Copy.cs index 4985b7b..6c5c79c 100644 --- a/Source/GenericImage/Extensions/Copy.cs +++ b/Source/GenericImage/Extensions/Copy.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/Extensions/ImageFlipping.cs b/Source/GenericImage/Extensions/ImageFlipping.cs index d84abf3..7ae4952 100644 --- a/Source/GenericImage/Extensions/ImageFlipping.cs +++ b/Source/GenericImage/Extensions/ImageFlipping.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/Extensions/Interop/CvMat.cs b/Source/GenericImage/Extensions/Interop/CvMat.cs new file mode 100644 index 0000000..a3e41b7 --- /dev/null +++ b/Source/GenericImage/Extensions/Interop/CvMat.cs @@ -0,0 +1,226 @@ +#region Licence and Terms +// DotImaging Framework +// https://github.com/dajuric/dot-imaging +// +// Copyright © Darko Jurić, 2014-2015 +// darko.juric2@gmail.com +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#endregion + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace DotImaging +{ + /// + /// OpenCV's Mat structure + /// + [StructLayout(LayoutKind.Sequential)] + public unsafe struct CvMat + { + /// + /// OpenCV's channel depth enumeration. + /// + public enum CvChannelDepth : int + { + /// + /// 8-bit unsigned type. + /// + CV_8U = 0, + /// + /// 8-bit signed type. + /// + CV_8S = 1, + /// + /// 16-bit unsigned type. + /// + CV_16U = 2, + /// + /// 16-bit signed type. + /// + CV_16S = 3, + /// + /// 32-bit integer signed type. + /// + CV_32S = 4, + /// + /// 32-bit floating-point signed type. + /// + CV_32F = 5, + /// + /// 64-bit floating-point signed type. + /// + CV_64F = 6, + /// + /// User defined type. + /// + UserType = 7 + } + + const int CV_CN_SHIFT = 3; + + /// + /// Encoded mat depth and number of channels. + /// + int matType; + /// + /// Number of bytes per image row. + /// + public int Step; + + //internal + int* refCount; + int hdr_refcount; + + /// + /// Image data pointer. + /// + public IntPtr ImageData; + /// + /// Image height. + /// + public int Height; + /// + /// Image width. + /// + public int Width; + + /// + /// Creates new CvMat from the already existing data. + /// + /// Image data pointer. + /// Image width. + /// Image height. + /// Number of bytes per row. + /// Channel depth. + /// Channel count. + /// + public static CvMat FromUserData(IntPtr imageData, int width, int height, int stride, CvChannelDepth depthType, int channelCount) + { + //taken from: https://github.com/Itseez/opencv/blob/ddf82d0b154873510802ef75c53e628cd7b2cb13/modules/core/include/opencv2/core/types_c.h + const int CV_MAT_MAGIC_VAL = 0x42420000; + + //CV_MAKETYPE from: https://github.com/Itseez/opencv/blob/ddf82d0b154873510802ef75c53e628cd7b2cb13/modules/core/include/opencv2/core/cvdef.h + const int CV_MAT_CONT_FLAG_SHIFT = 14; + const int CV_MAT_CONT_FLAG = (1 << CV_MAT_CONT_FLAG_SHIFT); + + //CV_MAKETYPE from: https://github.com/Itseez/opencv/blob/ddf82d0b154873510802ef75c53e628cd7b2cb13/modules/core/include/opencv2/core/cvdef.h + var matDepth = getDepth((int)depthType); + var cvType = matDepth + ((channelCount - 1) << CV_CN_SHIFT); + var mType = CV_MAT_MAGIC_VAL | CV_MAT_CONT_FLAG | cvType; + + return new CvMat + { + ImageData = imageData, + Width = width, + Height = height, + Step = stride, + matType = mType, + hdr_refcount = 0, + refCount = null + }; + } + + /// + /// Gets the channel depth. + /// + public CvChannelDepth ChannelDepth + { + get { return (CvChannelDepth)getDepth(matType); } + } + + /// + /// Gets the channel count. + /// + public int ChannelCount + { + get + { + //CV_ELEM_SIZE from: https://github.com/Itseez/opencv/blob/ddf82d0b154873510802ef75c53e628cd7b2cb13/modules/core/include/opencv2/core/cvdef.h + //0x3a50 = 11 10 10 01 01 00 00 ~ array of log2(sizeof(arr_type_elem)) + const int CV_CN_MAX = 512; + const int CV_MAT_CN_MASK = ((CV_CN_MAX - 1) << CV_CN_SHIFT); + + var CV_MAT_CN = (((matType & CV_MAT_CN_MASK) >> CV_CN_SHIFT) + 1); + return (CV_MAT_CN << ((((sizeof(int) / 4 + 1) * 16384 | 0x3a50) >> getDepth(matType) * 2) & 3)); + } + } + + //CV_MATDEPTH from: https://github.com/Itseez/opencv/blob/ddf82d0b154873510802ef75c53e628cd7b2cb13/modules/core/include/opencv2/core/cvdef.h + static int getDepth(int flags) + { + const int CV_DEPTH_MAX = (1 << CV_CN_SHIFT); + const int CV_MAT_DEPTH_MASK = (CV_DEPTH_MAX - 1); + + return (flags & CV_MAT_DEPTH_MASK); + } + } + + /// + /// Provides extension CvMat conversion methods + /// + public static class CvMatTypeConversions + { + static Dictionary typeConversion = null; + + static CvMatTypeConversions() + { + typeConversion = new Dictionary(); + + typeConversion.Add(typeof(byte), CvMat.CvChannelDepth.CV_8U); + typeConversion.Add(typeof(sbyte), CvMat.CvChannelDepth.CV_8S); + + typeConversion.Add(typeof(ushort), CvMat.CvChannelDepth.CV_16U); + typeConversion.Add(typeof(short), CvMat.CvChannelDepth.CV_16S); + + typeConversion.Add(typeof(int), CvMat.CvChannelDepth.CV_32S); + + typeConversion.Add(typeof(float), CvMat.CvChannelDepth.CV_32F); + typeConversion.Add(typeof(double), CvMat.CvChannelDepth.CV_64F); + } + + /// + /// Represents the existing image as CvMat structure where data is shared. + /// + /// Image. + /// CvMat representation. + public static CvMat AsCvMat(this IImage image) + { + var depthType = typeConversion[image.ColorInfo.ChannelType]; + + return CvMat.FromUserData(image.ImageData, image.Width, image.Height, image.Stride, depthType, image.ColorInfo.ChannelCount); + } + + /// + /// Copies data to managed array. + /// + /// Pixel color type. + /// OpenCV matrix. + /// Managed image representation. + public static TColor[,] ToArray(this CvMat cvMat) + where TColor: struct, IColor + { + var im = new TColor[cvMat.Height, cvMat.Width]; + + using (var uIm = Image.Lock(im)) + { + Copy.UnsafeCopy2D(cvMat.ImageData, uIm.ImageData, cvMat.Step, uIm.Stride, uIm.Height); + } + + return im; + } + } +} diff --git a/Source/GenericImage/Extensions/Interop/IplImageConversions.cs b/Source/GenericImage/Extensions/Interop/IplImage.cs similarity index 93% rename from Source/GenericImage/Extensions/Interop/IplImageConversions.cs rename to Source/GenericImage/Extensions/Interop/IplImage.cs index 3fb10a9..d202d18 100644 --- a/Source/GenericImage/Extensions/Interop/IplImageConversions.cs +++ b/Source/GenericImage/Extensions/Interop/IplImage.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -377,7 +376,7 @@ static ImageOpenCVImageConversions() /// /// Generic image. /// OpeCV image format. - public static IplImage AsOpenCvImage(this IImage image) + public static IplImage AsCvIplImage(this IImage image) { return new IplImage(image, (channelType) => { diff --git a/Source/GenericImage/Extensions/SpatialConvolution.cs b/Source/GenericImage/Extensions/SpatialConvolution.cs index 23eaca5..c31cb05 100644 --- a/Source/GenericImage/Extensions/SpatialConvolution.cs +++ b/Source/GenericImage/Extensions/SpatialConvolution.cs @@ -2,30 +2,24 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion using DotImaging.Primitives2D; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace DotImaging { diff --git a/Source/GenericImage/GenericImage.csproj b/Source/GenericImage/GenericImage.csproj index 7645e6f..4fc45d4 100644 --- a/Source/GenericImage/GenericImage.csproj +++ b/Source/GenericImage/GenericImage.csproj @@ -54,7 +54,8 @@ - + + diff --git a/Source/GenericImage/ParallelLauncher.cs b/Source/GenericImage/ParallelLauncher.cs index bc4bccf..5369321 100644 --- a/Source/GenericImage/ParallelLauncher.cs +++ b/Source/GenericImage/ParallelLauncher.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/Slice2D.cs b/Source/GenericImage/Slice2D.cs index d9fac1e..2133c72 100644 --- a/Source/GenericImage/Slice2D.cs +++ b/Source/GenericImage/Slice2D.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/Unmanaged/IImage.cs b/Source/GenericImage/Unmanaged/IImage.cs index f94a85e..0113bf8 100644 --- a/Source/GenericImage/Unmanaged/IImage.cs +++ b/Source/GenericImage/Unmanaged/IImage.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/GenericImage/Unmanaged/Image'1.cs b/Source/GenericImage/Unmanaged/Image'1.cs index 6d0ac9f..abe9825 100644 --- a/Source/GenericImage/Unmanaged/Image'1.cs +++ b/Source/GenericImage/Unmanaged/Image'1.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -67,7 +66,11 @@ public static Image Lock(TColor[,] array) /// Creates an unmanaged image representation from the provided array and image width (un-flattens the array). /// No data is copied. /// - /// Array to lock. + /// Raw-byte image data array to lock. + /// + /// Image width. + /// Data length and the provided width must produce an integer height. + /// /// Unmanaged image. public static Image Lock(byte[] rawImageArray, int width) { diff --git a/Source/IO/Base/Abstract/ImageStream.cs b/Source/IO/Base/Abstract/ImageStream.cs index d338e27..375bef2 100644 --- a/Source/IO/Base/Abstract/ImageStream.cs +++ b/Source/IO/Base/Abstract/ImageStream.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/IO/Base/Abstract/ImageStreamReader.cs b/Source/IO/Base/Abstract/ImageStreamReader.cs index b84aba5..0368923 100644 --- a/Source/IO/Base/Abstract/ImageStreamReader.cs +++ b/Source/IO/Base/Abstract/ImageStreamReader.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/IO/Base/Abstract/ImageStreamWriter.cs b/Source/IO/Base/Abstract/ImageStreamWriter.cs index 38f89e9..c85386d 100644 --- a/Source/IO/Base/Abstract/ImageStreamWriter.cs +++ b/Source/IO/Base/Abstract/ImageStreamWriter.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/IO/Base/CvHighGuiInvoke.cs b/Source/IO/Base/CvInvoke.cs similarity index 81% rename from Source/IO/Base/CvHighGuiInvoke.cs rename to Source/IO/Base/CvInvoke.cs index 9108f51..9b0ee1a 100644 --- a/Source/IO/Base/CvHighGuiInvoke.cs +++ b/Source/IO/Base/CvInvoke.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -137,14 +136,87 @@ public override string ToString() } /// - /// Internal class for OpenCV highgui library invocation. + /// OpenCV capture properties for camera and video. + /// + internal enum CaptureProperty: int + { + PosMsec = 0, + PosFrames = 1, + FrameWidth = 3, + FrameHeight = 4, + FPS = 5, + FrameCount = 7, + + /************** camera properties ******************/ + Brightness = 10, + Contrast = 11, + Saturation = 12, + Hue = 13, + Gain = 14, + Exposure = 15, + /************** camera properties ******************/ + + ConvertRGB = 16 + } + + /// + /// OpenCV image load mode. + /// + [Flags] + internal enum ImageLoadType : int + { + /// + /// Loads the image as is (including the alpha channel if present) + /// + Unchanged = -1, + + /// + /// Loads the image as an intensity image + /// + Grayscale = 0, + + /// + /// Loads the image in the RGB format + /// + Color = 1, + + /// + /// Loads the image of any color + /// + AnyColor = 4, + + /// + /// Loads the image of any depth + /// + AnyDepth = 2 + } + + /// + /// Internal class for OpenCV core / highgui library invocation. /// - internal static class CvHighGuiInvoke + internal static class CvInvoke { public const CallingConvention CvCallingConvention = CallingConvention.Cdecl; public const string OPENCV_CORE_LIBRARY = "opencv_core248"; public const string OPENCV_HIGHGUI_LIBRARY = "opencv_highgui248"; + static CvInvoke() + { + Platform.AddDllSearchPath(); + } + + #region Core + + [DllImport(OPENCV_CORE_LIBRARY, CallingConvention = CvCallingConvention)] + public unsafe static extern void cvReleaseMat(ref CvMat* mat); + + //[SuppressUnmanagedCodeSecurity] + [DllImport(OPENCV_CORE_LIBRARY, CallingConvention = CvCallingConvention)] + public unsafe static extern void cvReleaseImage(ref IplImage* image); + #endregion + + #region Video reader + //[SuppressUnmanagedCodeSecurity] [DllImport(OPENCV_HIGHGUI_LIBRARY, CallingConvention = CvCallingConvention)] public static extern IntPtr cvCreateCameraCapture(int index); @@ -180,36 +252,23 @@ public static Size GetImageSize(IntPtr capturePtr) { return new Size { - Width = (int)CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.FrameWidth), - Height = (int)CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.FrameHeight) + Width = (int)CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.FrameWidth), + Height = (int)CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.FrameHeight) }; } public static bool SetImageSize(IntPtr capturePtr, Size newSize) { bool success; - success = CvHighGuiInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.FrameWidth, newSize.Width); - success &= CvHighGuiInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.FrameHeight, newSize.Height); + success = CvInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.FrameWidth, newSize.Width); + success &= CvInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.FrameHeight, newSize.Height); return success; } + #endregion - /************************************************ image IO ****************************************************/ - //[SuppressUnmanagedCodeSecurity] - [DllImport(OPENCV_HIGHGUI_LIBRARY, CallingConvention = CvCallingConvention)] - public unsafe static extern IplImage* cvLoadImage([MarshalAs(UnmanagedType.LPStr)] String filename, ImageLoadType loadType); - - //[SuppressUnmanagedCodeSecurity] - [DllImport(OPENCV_CORE_LIBRARY, CallingConvention = CvCallingConvention)] - public unsafe static extern void cvReleaseImage(ref IplImage* image); - - //[SuppressUnmanagedCodeSecurity] - [DllImport(OPENCV_HIGHGUI_LIBRARY, CallingConvention = CvCallingConvention)] - public unsafe static extern bool cvSaveImage([MarshalAs(UnmanagedType.LPStr)] String filename, IplImage* image, IntPtr parameters); - /************************************************ image IO ****************************************************/ - - /************************************************ videoWriter IO ****************************************************/ + #region Video writer /// /// Creates video writer structure. @@ -242,68 +301,28 @@ public static bool SetImageSize(IntPtr capturePtr, Size newSize) //[SuppressUnmanagedCodeSecurity] [DllImport(OPENCV_HIGHGUI_LIBRARY, CallingConvention = CvCallingConvention)] public static extern void cvReleaseVideoWriter(ref IntPtr writer); + #endregion - /************************************************ videoWriter IO ****************************************************/ - - static CvHighGuiInvoke() - { - Platform.AddDllSearchPath(); - } - } - - /// - /// OpenCV capture properties for camera and video. - /// - internal enum CaptureProperty: int - { - PosMsec = 0, - PosFrames = 1, - FrameWidth = 3, - FrameHeight = 4, - FPS = 5, - FrameCount = 7, - - /************** camera properties ******************/ - Brightness = 10, - Contrast = 11, - Saturation = 12, - Hue = 13, - Gain = 14, - Exposure = 15, - /************** camera properties ******************/ + #region Image IO - ConvertRGB = 16 - } + //[SuppressUnmanagedCodeSecurity] + [DllImport(OPENCV_HIGHGUI_LIBRARY, CallingConvention = CvCallingConvention)] + public unsafe static extern IplImage* cvLoadImage([MarshalAs(UnmanagedType.LPStr)] String filename, ImageLoadType loadType); - /// - /// OpenCV image load mode. - /// - [Flags] - internal enum ImageLoadType : int - { - /// - /// Loads the image as is (including the alpha channel if present) - /// - Unchanged = -1, + //[SuppressUnmanagedCodeSecurity] + [DllImport(OPENCV_HIGHGUI_LIBRARY, CallingConvention = CvCallingConvention)] + public unsafe static extern bool cvSaveImage([MarshalAs(UnmanagedType.LPStr)] String filename, IplImage* image, IntPtr parameters); - /// - /// Loads the image as an intensity image - /// - Grayscale = 0, + public const int CV_IMWRITE_JPEG_QUALITY = 1; + public const int CV_IMWRITE_PNG_COMPRESSION = 16; + public const int CV_IMWRITE_PXM_BINARY = 32; - /// - /// Loads the image in the RGB format - /// - Color = 1, + [DllImport(OPENCV_HIGHGUI_LIBRARY, CallingConvention = CvCallingConvention)] + public unsafe static extern CvMat* cvEncodeImage([MarshalAs(UnmanagedType.LPStr)] string ext, CvMat* image, int* parameters = null); - /// - /// Loads the image of any color - /// - AnyColor = 4, + [DllImport(OPENCV_HIGHGUI_LIBRARY, CallingConvention = CvCallingConvention)] + public unsafe static extern CvMat* cvDecodeImageM(void* buffer, ImageLoadType loadType); - /// - /// Loads the image of any depth - /// - AnyDepth = 2 + #endregion Image IO } } diff --git a/Source/IO/IO.csproj b/Source/IO/IO.csproj index 8e6d277..55609fd 100644 --- a/Source/IO/IO.csproj +++ b/Source/IO/IO.csproj @@ -52,7 +52,7 @@ - + diff --git a/Source/IO/ImageIO.cs b/Source/IO/ImageIO.cs index 8bbef09..4946a55 100644 --- a/Source/IO/ImageIO.cs +++ b/Source/IO/ImageIO.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -29,16 +28,15 @@ namespace DotImaging /// public static class ImageIO { - //TODO: Load overloads for float, double... ?? - //TODO: add imDecode, imEncode (requires CvMat implementation) + #region Load (file) private unsafe static IImage load(string fileName, ImageLoadType imageLoadType) { - var iplImagePtr = CvHighGuiInvoke.cvLoadImage(fileName, imageLoadType); + var iplImagePtr = CvInvoke.cvLoadImage(fileName, imageLoadType); var image = (*iplImagePtr).AsImage((_) => { if (iplImagePtr == null) return; - CvHighGuiInvoke.cvReleaseImage(ref iplImagePtr); + CvInvoke.cvReleaseImage(ref iplImagePtr); }); return image; @@ -74,6 +72,10 @@ public unsafe static Image> LoadGray(string fileName) return load(fileName, ImageLoadType.Grayscale) as Image>; } + #endregion + + #region Save (file) + /// /// Saves the provided image. If the image has non-supported color or depth false value is returned. /// @@ -85,14 +87,14 @@ public unsafe static bool TrySave(IImage image, string fileName) IplImage iplImage = default(IplImage); try { - iplImage = image.AsOpenCvImage(); + iplImage = image.AsCvIplImage(); } catch { return false; } - CvHighGuiInvoke.cvSaveImage(fileName, &iplImage, IntPtr.Zero); + CvInvoke.cvSaveImage(fileName, &iplImage, IntPtr.Zero); return true; } @@ -105,8 +107,8 @@ public unsafe static bool TrySave(IImage image, string fileName) private unsafe static void Save(this Image image, string fileName) where TColor : struct, IColor { - var iplImage = image.AsOpenCvImage(); - CvHighGuiInvoke.cvSaveImage(fileName, &iplImage, IntPtr.Zero); + var iplImage = image.AsCvIplImage(); + CvInvoke.cvSaveImage(fileName, &iplImage, IntPtr.Zero); } /// @@ -120,8 +122,8 @@ private unsafe static void Save(this TColor[,] image, string fileName) { using (var img = image.Lock()) { - var iplImage = img.AsOpenCvImage(); - CvHighGuiInvoke.cvSaveImage(fileName, &iplImage, IntPtr.Zero); + var iplImage = img.AsCvIplImage(); + CvInvoke.cvSaveImage(fileName, &iplImage, IntPtr.Zero); } } @@ -346,5 +348,271 @@ public static void Save(this Bgra[,] image, string fileName) } #endregion + + #endregion + + #region Encode + + /// + /// Encodes the specified image into the Jpeg byte array. + /// + /// Image to encode. + /// Jpeg quality [0..100] where 100 is the highest quality. + /// Jpeg byte array. + public static byte[] EncodeAsJpeg(this Gray[,] image, int jpegQuality = 95) + { + return encodeAsJpeg(image, jpegQuality); + } + + /// + /// Encodes the specified image into the Jpeg byte array. + /// + /// Image to encode. + /// Jpeg quality [0..100] where 100 is the highest quality. + /// Jpeg byte array. + public static byte[] EncodeAsJpeg(this Bgr[,] image, int jpegQuality = 95) + { + return encodeAsJpeg(image, jpegQuality); + } + + /// + /// Encodes the specified image into the Jpeg byte array. + /// + /// Image to encode. + /// Jpeg quality [0..100] where 100 is the highest quality. + /// Jpeg byte array. + public static byte[] EncodeAsJpeg(this Gray[,] image, int jpegQuality = 95) + { + return encodeAsJpeg(image, jpegQuality); + } + + /// + /// Encodes the specified image into the Jpeg byte array. + /// + /// Image to encode. + /// Jpeg quality [0..100] where 100 is the highest quality. + /// Jpeg byte array. + public static byte[] EncodeAsJpeg(this Bgr[,] image, int jpegQuality = 95) + { + return encodeAsJpeg(image, jpegQuality); + } + + /// + /// Encodes the specified image into the PNG byte array. + /// + /// Image to encode. + /// PNG compression level [0..9] where 9 is the highest compression. + /// PNG byte array. + public static byte[] EncodeAsPng(this Gray[,] image, int pngCompression = 3) + { + return encodeAsPng(image, pngCompression); + } + + /// + /// Encodes the specified image into the PNG byte array. + /// + /// Image to encode. + /// PNG compression level [0..9] where 9 is the highest compression. + /// PNG byte array. + public static byte[] EncodeAsPng(this Bgr[,] image, int pngCompression = 3) + { + return encodeAsPng(image, pngCompression); + } + + /// + /// Encodes the specified image into the PNG byte array. + /// + /// Image to encode. + /// PNG compression level [0..9] where 9 is the highest compression. + /// PNG byte array. + public static byte[] EncodeAsPng(this Bgra[,] image, int pngCompression = 3) + { + return encodeAsPng(image, pngCompression); + } + + /// + /// Encodes the specified image into the PNG byte array. + /// + /// Image to encode. + /// PNG compression level [0..9] where 9 is the highest compression. + /// PNG byte array. + public static byte[] EncodeAsPng(this Gray[,] image, int pngCompression = 3) + { + return encodeAsPng(image, pngCompression); + } + + /// + /// Encodes the specified image into the PNG byte array. + /// + /// Image to encode. + /// PNG compression level [0..9] where 9 is the highest compression. + /// PNG byte array. + public static byte[] EncodeAsPng(this Bgr[,] image, int pngCompression = 3) + { + return encodeAsPng(image, pngCompression); + } + + /// + /// Encodes the specified image into the PNG byte array. + /// + /// Image to encode. + /// PNG compression level [0..9] where 9 is the highest compression. + /// PNG byte array. + public static byte[] EncodeAsPng(this Bgra[,] image, int pngCompression = 3) + { + return encodeAsPng(image, pngCompression); + } + + /// + /// Encodes the specified image into the specified image type byte array. + /// + /// Image to encode. + /// Image type extension (.bmp, .png, .jpg) + /// Image type byte array. + public static byte[] Encode(this Gray[,] image, string extension) + { + return encode(image, extension, null); + } + + /// + /// Encodes the specified image into the specified image type byte array. + /// + /// Image to encode. + /// Image type extension (.bmp, .png, .jpg) + /// Image type byte array. + public static byte[] Encode(this Bgr[,] image, string extension) + { + return encode(image, extension, null); + } + + /// + /// Encodes the specified image into the specified image type byte array. + /// + /// Image to encode. + /// Image type extension (.bmp, .png, .jpg) + /// Image type byte array. + public static byte[] Encode(this Bgra[,] image, string extension) + { + return encode(image, extension, null); + } + + /// + /// Encodes the specified image into the specified image type byte array. + /// + /// Image to encode. + /// Image type extension (.bmp, .png, .jpg) + /// Image type byte array. + public static byte[] Encode(this Gray[,] image, string extension) + { + return encode(image, extension, null); + } + + /// + /// Encodes the specified image into the specified image type byte array. + /// + /// Image to encode. + /// Image type extension (.bmp, .png, .jpg) + /// Image type byte array. + public static byte[] Encode(this Bgr[,] image, string extension) + { + return encode(image, extension, null); + } + + /// + /// Encodes the specified image into the specified image type byte array. + /// + /// Image to encode. + /// Image type extension (.bmp, .png, .jpg) + /// Image type byte array. + public static byte[] Encode(this Bgra[,] image, string extension) + { + return encode(image, extension, null); + } + + static byte[] encodeAsJpeg(TColor[,] image, int jpegQuality = 95) + where TColor : struct, IColor + { + if (jpegQuality < 0 || jpegQuality > 100) + throw new ArgumentOutOfRangeException("Jpeg quality must be in range: 0-100."); + + int[] parameters = new int[] { CvInvoke.CV_IMWRITE_JPEG_QUALITY, jpegQuality, 0 }; + return encode(image, ".jpg", parameters); + } + + static byte[] encodeAsPng(TColor[,] image, int pngCompression = 3) + where TColor : struct, IColor + { + if (pngCompression < 0 || pngCompression > 9) + throw new ArgumentOutOfRangeException("Png compression must be in range: 0-9."); + + int[] parameters = new int[] { CvInvoke.CV_IMWRITE_PNG_COMPRESSION, pngCompression, 0 }; + return encode(image, ".png", parameters); + } + + static unsafe byte[] encode(TColor[,] image, string extension, int[] parameters) + where TColor : struct, IColor + { + CvMat* matEncoded; //a single-row image + + using (var uImg = image.Lock()) + { + fixed (int* paramsPtr = parameters) + { + var mat = uImg.AsCvMat(); + matEncoded = CvInvoke.cvEncodeImage(extension, &mat, paramsPtr); + } + } + + byte[] imEncoded = new byte[matEncoded->Step * matEncoded->Height]; + fixed (byte* arrPtr = &imEncoded[0]) + { + Copy.UnsafeCopy(matEncoded->ImageData, (IntPtr)arrPtr, imEncoded.Length); + } + + CvInvoke.cvReleaseMat(ref matEncoded); //TODOD: check if this deferences the image + return imEncoded; + } + + #endregion + + #region Decode + + /// + /// Decodes (and converts if necessary) an image as color image using the specified byte array. + /// + /// Encoded image. + /// Decoded image. + public unsafe static Bgr[,] DecodeAsColorImage(this byte[] encodedImage) + { + return decodeImage>(encodedImage, ImageLoadType.Color); + } + + /// + /// Decodes (and converts if necessary) an image as gray image using the specified byte array. + /// + /// Encoded image. + /// Decoded image. + public unsafe static Gray[,] DecodeAsGrayImage(this byte[] encodedImage) + { + return decodeImage>(encodedImage, ImageLoadType.Grayscale); + } + + unsafe static TColor[,] decodeImage(byte[] encodedImage, ImageLoadType loadType) + where TColor : struct, IColor + { + CvMat* matDecoded; + fixed (byte* encodedImPtr = encodedImage) + { + CvMat mat = CvMat.FromUserData((IntPtr)encodedImPtr, encodedImage.Length, 1, encodedImage.Length, CvMat.CvChannelDepth.CV_8U, 1); + matDecoded = CvInvoke.cvDecodeImageM(&mat, ImageLoadType.Color); + } + + var imDecoded = (*matDecoded).ToArray(); + CvInvoke.cvReleaseMat(ref matDecoded); + + return imDecoded; + } + + #endregion } } diff --git a/Source/IO/Properties/AssemblyInfo.cs b/Source/IO/Properties/AssemblyInfo.cs index 19dc0ed..09f354f 100644 --- a/Source/IO/Properties/AssemblyInfo.cs +++ b/Source/IO/Properties/AssemblyInfo.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/IO/Readers/CameraCapture.cs b/Source/IO/Readers/CameraCapture.cs index 4b04c7a..fc61479 100644 --- a/Source/IO/Readers/CameraCapture.cs +++ b/Source/IO/Readers/CameraCapture.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -26,7 +25,7 @@ namespace DotImaging { /// - /// Represents camera streamable source and provides functions and properties to access a device in a streamable way. + /// Represents camera stream-able source and provides functions and properties to access a device in a stream-able way. /// public class CameraCapture: VideoCaptureBase { @@ -52,7 +51,7 @@ public override void Open() if (capturePtr != IntPtr.Zero) return; - capturePtr = CvHighGuiInvoke.cvCreateCameraCapture(cameraIdx); + capturePtr = CvInvoke.cvCreateCameraCapture(cameraIdx); if (capturePtr == IntPtr.Zero) throw new Exception("Cannot open camera stream! It seems that camera device can not be found."); } @@ -63,8 +62,8 @@ public override void Open() /// public double Brightness { - get { return CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Brightness); } - set { CvHighGuiInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Brightness, value); } + get { return CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Brightness); } + set { CvInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Brightness, value); } } /// @@ -73,8 +72,8 @@ public double Brightness /// public double Contrast { - get { return CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Contrast); } - set { CvHighGuiInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Contrast, value); } + get { return CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Contrast); } + set { CvInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Contrast, value); } } /// @@ -83,8 +82,8 @@ public double Contrast /// public double Exposure { - get { return CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Exposure); } - set { CvHighGuiInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Exposure, value); } + get { return CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Exposure); } + set { CvInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Exposure, value); } } /// @@ -93,8 +92,8 @@ public double Exposure /// public double Gain { - get { return CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Gain); } - set { CvHighGuiInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Gain, value); } + get { return CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Gain); } + set { CvInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Gain, value); } } /// @@ -103,8 +102,8 @@ public double Gain /// public double Hue { - get { return CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Hue); } - set { CvHighGuiInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Hue, value); } + get { return CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Hue); } + set { CvInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Hue, value); } } /// @@ -113,8 +112,8 @@ public double Hue /// public double Saturation { - get { return CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Saturation); } - set { CvHighGuiInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Saturation, value); } + get { return CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.Saturation); } + set { CvInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.Saturation, value); } } /// @@ -122,8 +121,8 @@ public double Saturation /// public new Size FrameSize { - get { return CvHighGuiInvoke.GetImageSize(capturePtr); } - set { CvHighGuiInvoke.SetImageSize(capturePtr, value); } + get { return CvInvoke.GetImageSize(capturePtr); } + set { CvInvoke.SetImageSize(capturePtr, value); } } /// @@ -132,8 +131,33 @@ public new Size FrameSize /// public new double FrameRate { - get { return CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.FPS); } - set { CvHighGuiInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.FPS, value); } + get { return CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.FPS); } + set { CvInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.FPS, value); } + } + + /// + /// Gets the available device count. + /// Warning: the function closes existing streams, so use it before any camera capture object is created. + /// + public static int CameraCount + { + get + { + int cameraIdx = 0; + while (true) + { + var capturePtr = CvInvoke.cvCreateCameraCapture(cameraIdx); + if (capturePtr != IntPtr.Zero) + { + CvInvoke.cvReleaseCapture(ref capturePtr); + cameraIdx++; + } + else + break; + } + + return cameraIdx; + } } } } diff --git a/Source/IO/Readers/FileCapture.cs b/Source/IO/Readers/FileCapture.cs index b2980a2..12e7186 100644 --- a/Source/IO/Readers/FileCapture.cs +++ b/Source/IO/Readers/FileCapture.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -55,7 +54,7 @@ public override void Open() if (capturePtr != IntPtr.Zero) return; - capturePtr = CvHighGuiInvoke.cvCreateFileCapture(fileName); + capturePtr = CvInvoke.cvCreateFileCapture(fileName); if (capturePtr == IntPtr.Zero) throw new Exception("Cannot open FileStream!"); } @@ -65,7 +64,7 @@ public override void Open() /// public override long Position { - get { return (long)CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.PosFrames); } + get { return (long)CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.PosFrames); } protected set { } } @@ -79,7 +78,7 @@ public override long Position public override long Seek(long offset, System.IO.SeekOrigin origin = SeekOrigin.Current) { var frameIndex = base.Seek(offset, origin); - CvHighGuiInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.PosFrames, frameIndex); + CvInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.PosFrames, frameIndex); return Position; } diff --git a/Source/IO/Readers/ImageDirectoryCapture.cs b/Source/IO/Readers/ImageDirectoryCapture.cs index d166ee1..d65abd6 100644 --- a/Source/IO/Readers/ImageDirectoryCapture.cs +++ b/Source/IO/Readers/ImageDirectoryCapture.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/IO/Readers/VideoCaptureBase.cs b/Source/IO/Readers/VideoCaptureBase.cs index f2fee21..0d4fd27 100644 --- a/Source/IO/Readers/VideoCaptureBase.cs +++ b/Source/IO/Readers/VideoCaptureBase.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -41,7 +40,7 @@ public abstract class VideoCaptureBase : ImageStreamReader public override void Close() { if (capturePtr != IntPtr.Zero) - CvHighGuiInvoke.cvReleaseCapture(ref capturePtr); + CvInvoke.cvReleaseCapture(ref capturePtr); } object syncObj = new object(); @@ -58,7 +57,7 @@ protected override bool ReadInternal(out IImage image) lock (syncObj) { IntPtr cvFramePtr; - cvFramePtr = CvHighGuiInvoke.cvQueryFrame(capturePtr); + cvFramePtr = CvInvoke.cvQueryFrame(capturePtr); if (cvFramePtr != IntPtr.Zero) { @@ -76,7 +75,7 @@ protected override bool ReadInternal(out IImage image) /// public override long Length { - get { return (long)CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.FrameCount); } + get { return (long)CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.FrameCount); } } /// @@ -84,8 +83,8 @@ public override long Length /// public bool ConvertRgb { - get { return (int)CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.ConvertRGB) != 0; } - set { CvHighGuiInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.ConvertRGB, value ? 0 : 1); } + get { return (int)CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.ConvertRGB) != 0; } + set { CvInvoke.cvSetCaptureProperty(capturePtr, CaptureProperty.ConvertRGB, value ? 0 : 1); } } /// @@ -93,7 +92,7 @@ public bool ConvertRgb /// public Size FrameSize { - get { return CvHighGuiInvoke.GetImageSize(capturePtr); } + get { return CvInvoke.GetImageSize(capturePtr); } } /// @@ -101,7 +100,7 @@ public Size FrameSize /// public float FrameRate { - get { return (float)CvHighGuiInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.FPS); } + get { return (float)CvInvoke.cvGetCaptureProperty(capturePtr, CaptureProperty.FPS); } } } } diff --git a/Source/IO/Writers/ImageWriterExtension.cs b/Source/IO/Writers/ImageWriterExtension.cs index 178f6e4..2c02d55 100644 --- a/Source/IO/Writers/ImageWriterExtension.cs +++ b/Source/IO/Writers/ImageWriterExtension.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/IO/Writers/VideoWriter.cs b/Source/IO/Writers/VideoWriter.cs index 947b45d..c261668 100644 --- a/Source/IO/Writers/VideoWriter.cs +++ b/Source/IO/Writers/VideoWriter.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -99,7 +98,7 @@ public override void Open() if (videoObjPtr != IntPtr.Zero) return; - videoObjPtr = CvHighGuiInvoke.cvCreateVideoWriter(OutputFileName, (int)Codec, FrameRate, FrameSize, ColorFrames); + videoObjPtr = CvInvoke.cvCreateVideoWriter(OutputFileName, (int)Codec, FrameRate, FrameSize, ColorFrames); if (videoObjPtr == IntPtr.Zero) throw new Exception(String.Format("Cannot open FileStream! Please check that the selected codec ({0}) is supported.", Codec)); } @@ -143,10 +142,10 @@ protected unsafe override bool WriteInternal(IImage image) this.Position++; - var iplImg = image.AsOpenCvImage(); + var iplImg = image.AsCvIplImage(); IplImage* iplImgPtr = (IplImage*)&iplImg; - isSuccessful = CvHighGuiInvoke.cvWriteFrame(videoObjPtr, (IntPtr)iplImgPtr); + isSuccessful = CvInvoke.cvWriteFrame(videoObjPtr, (IntPtr)iplImgPtr); } return isSuccessful; @@ -159,7 +158,7 @@ protected unsafe override bool WriteInternal(IImage image) public override void Close() { if (videoObjPtr != IntPtr.Zero) - CvHighGuiInvoke.cvReleaseVideoWriter(ref videoObjPtr); + CvInvoke.cvReleaseVideoWriter(ref videoObjPtr); } } } \ No newline at end of file diff --git a/Source/Linq/ImagingLinq.cs b/Source/Linq/ImagingLinq.cs index 336c13d..f030be2 100644 --- a/Source/Linq/ImagingLinq.cs +++ b/Source/Linq/ImagingLinq.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Linq/Public/ImagingLinq.cs b/Source/Linq/Public/ImagingLinq.cs index 65c9c15..2665d1e 100644 --- a/Source/Linq/Public/ImagingLinq.cs +++ b/Source/Linq/Public/ImagingLinq.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Primitives2D/Box2D/Box2D.cs b/Source/Primitives2D/Box2D/Box2D.cs index b80c563..486b12a 100644 --- a/Source/Primitives2D/Box2D/Box2D.cs +++ b/Source/Primitives2D/Box2D/Box2D.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Primitives2D/Circle/Circle.cs b/Source/Primitives2D/Circle/Circle.cs index f38b6d1..f39ee41 100644 --- a/Source/Primitives2D/Circle/Circle.cs +++ b/Source/Primitives2D/Circle/Circle.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Primitives2D/Circle/CircleF.cs b/Source/Primitives2D/Circle/CircleF.cs index 730c91e..e18299b 100644 --- a/Source/Primitives2D/Circle/CircleF.cs +++ b/Source/Primitives2D/Circle/CircleF.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Primitives2D/Ellipse/Ellipse.cs b/Source/Primitives2D/Ellipse/Ellipse.cs index 9d6097a..578fa3b 100644 --- a/Source/Primitives2D/Ellipse/Ellipse.cs +++ b/Source/Primitives2D/Ellipse/Ellipse.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Primitives2D/Point/Point.cs b/Source/Primitives2D/Point/Point.cs index 5376983..c4b9104 100644 --- a/Source/Primitives2D/Point/Point.cs +++ b/Source/Primitives2D/Point/Point.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // //---------------------- original----------------------- diff --git a/Source/Primitives2D/Point/PointExtensions.cs b/Source/Primitives2D/Point/PointExtensions.cs index 613a35a..bc1b1f0 100644 --- a/Source/Primitives2D/Point/PointExtensions.cs +++ b/Source/Primitives2D/Point/PointExtensions.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Primitives2D/Point/PointF.cs b/Source/Primitives2D/Point/PointF.cs index c4cbb2c..d8a4443 100644 --- a/Source/Primitives2D/Point/PointF.cs +++ b/Source/Primitives2D/Point/PointF.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // //---------------------- original----------------------- diff --git a/Source/Primitives2D/Rectangle/Rectangle.cs b/Source/Primitives2D/Rectangle/Rectangle.cs index 3d57d47..f2010bc 100644 --- a/Source/Primitives2D/Rectangle/Rectangle.cs +++ b/Source/Primitives2D/Rectangle/Rectangle.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // //---------------------- original----------------------- diff --git a/Source/Primitives2D/Rectangle/RectangleExtensions.cs b/Source/Primitives2D/Rectangle/RectangleExtensions.cs index 2fe160d..67c62c1 100644 --- a/Source/Primitives2D/Rectangle/RectangleExtensions.cs +++ b/Source/Primitives2D/Rectangle/RectangleExtensions.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Primitives2D/Rectangle/RectangleF.cs b/Source/Primitives2D/Rectangle/RectangleF.cs index 2022adf..c0892f4 100644 --- a/Source/Primitives2D/Rectangle/RectangleF.cs +++ b/Source/Primitives2D/Rectangle/RectangleF.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // //---------------------- original----------------------- diff --git a/Source/Primitives2D/Size/Size.cs b/Source/Primitives2D/Size/Size.cs index 92a8a1f..2daacf8 100644 --- a/Source/Primitives2D/Size/Size.cs +++ b/Source/Primitives2D/Size/Size.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // //---------------------- original----------------------- diff --git a/Source/Primitives2D/Size/SizeExtensions.cs b/Source/Primitives2D/Size/SizeExtensions.cs index 578e155..78a1a57 100644 --- a/Source/Primitives2D/Size/SizeExtensions.cs +++ b/Source/Primitives2D/Size/SizeExtensions.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion diff --git a/Source/Primitives2D/Size/SizeF.cs b/Source/Primitives2D/Size/SizeF.cs index 4949fd3..f4b37ac 100644 --- a/Source/Primitives2D/Size/SizeF.cs +++ b/Source/Primitives2D/Size/SizeF.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // //---------------------- original----------------------- diff --git a/Test/Playground.csproj b/Test/Playground.csproj index 64c18cf..2b973b7 100644 --- a/Test/Playground.csproj +++ b/Test/Playground.csproj @@ -1,93 +1,97 @@ - - - - - Debug - AnyCPU - {F34AE966-F8EB-46EC-A1A9-E7D8B1CA3DAB} - Exe - Properties - Test - Test - v4.5 - 512 - ..\..\ - true - - - AnyCPU - true - full - false - bin\ - DEBUG;TRACE - prompt - 4 - true - false - - - AnyCPU - pdbonly - true - bin\ - TRACE - prompt - 4 - true - false - - - - - - - - - - - - - - - - - - - {ce222a84-b03b-4053-8ba4-f237063382f2} - BitmapInterop - - - {00a17086-903d-4047-bfb2-c7b4aa110b97} - Drawing - - - {3cf8f155-3da1-4529-9b28-d409e86ed4e2} - GenericImage - - - {ed70a44e-9443-4a28-9b95-31299f8b2d08} - IO - - - {8f4adf98-76e1-4893-a458-486542eed521} - Linq - - - {d5767a78-e50a-4b5d-94f5-44a59b87f944} - Primitives2D - - - - - - - - + + + + + Debug + AnyCPU + {F34AE966-F8EB-46EC-A1A9-E7D8B1CA3DAB} + Exe + Properties + Test + Test + v4.5 + 512 + ..\..\ + true + + + AnyCPU + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + true + false + + + AnyCPU + pdbonly + true + bin\ + TRACE + prompt + 4 + true + false + + + + + + + + + + + + + + + + + + + {ce222a84-b03b-4053-8ba4-f237063382f2} + BitmapInterop + + + {f46115e9-c4fc-4355-93ae-be8e96b236c9} + Core + + + {00a17086-903d-4047-bfb2-c7b4aa110b97} + Drawing + + + {3cf8f155-3da1-4529-9b28-d409e86ed4e2} + GenericImage + + + {ed70a44e-9443-4a28-9b95-31299f8b2d08} + IO + + + {8f4adf98-76e1-4893-a458-486542eed521} + Linq + + + {d5767a78-e50a-4b5d-94f5-44a59b87f944} + Primitives2D + + + + + + + + \ No newline at end of file diff --git a/Test/Program.cs b/Test/Program.cs index b84594f..d054ce2 100644 --- a/Test/Program.cs +++ b/Test/Program.cs @@ -2,21 +2,20 @@ // DotImaging Framework // https://github.com/dajuric/dot-imaging // -// Copyright © Darko Jurić, 2014-2015 +// Copyright © Darko Jurić, 2014-2015 // darko.juric2@gmail.com // -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see . +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // #endregion @@ -26,6 +25,7 @@ using System.Linq; using DotImaging; using DotImaging.Linq; +using System.Runtime.InteropServices; namespace Test { @@ -40,9 +40,12 @@ unsafe static void Main() var resourceDir = Path.Combine(Directory.GetParent(Directory.GetCurrentDirectory()).FullName, "Resources"); var imgColor = ImageIO.LoadColor(Path.Combine(resourceDir, "testColorBig.jpg")).Clone(); + byte[] arr = imgColor.EncodeAsPng(); + var decodedIm = arr.DecodeAsColorImage(); + decodedIm.Save("out.bmp"); + var rImg = imgColor.AsEnumerable().Select(x => x.G).ToArray2D(imgColor.Width(), imgColor.Height()); } } - }