add qr generator

This commit is contained in:
2020-11-30 15:33:21 +05:00
parent a907d8bbeb
commit 2b8916de8c
43 changed files with 3726 additions and 1 deletions
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,7 @@
{
"BuildId": "13144385",
"Modules":
{
"QRcode": "UE4Editor-QRcode.dll"
}
}
@@ -0,0 +1,292 @@
#undef QRCODE_API
#undef UE_IS_ENGINE_MODULE
#undef DEPRECATED_FORGAME
#define DEPRECATED_FORGAME DEPRECATED
#undef UE_DEPRECATED_FORGAME
#define UE_DEPRECATED_FORGAME UE_DEPRECATED
#define IS_PROGRAM 0
#define UE_EDITOR 1
#define ENABLE_PGO_PROFILE 0
#define USE_VORBIS_FOR_STREAMING 1
#define USE_XMA2_FOR_STREAMING 1
#define WITH_DEV_AUTOMATION_TESTS 1
#define WITH_PERF_AUTOMATION_TESTS 1
#define UNICODE 1
#define _UNICODE 1
#define __UNREAL__ 1
#define IS_MONOLITHIC 0
#define WITH_ENGINE 1
#define WITH_UNREAL_DEVELOPER_TOOLS 1
#define WITH_APPLICATION_CORE 1
#define WITH_COREUOBJECT 1
#define USE_STATS_WITHOUT_ENGINE 0
#define WITH_PLUGIN_SUPPORT 0
#define WITH_ACCESSIBILITY 1
#define WITH_PERFCOUNTERS 1
#define USE_LOGGING_IN_SHIPPING 0
#define WITH_LOGGING_TO_MEMORY 0
#define USE_CACHE_FREED_OS_ALLOCS 1
#define USE_CHECKS_IN_SHIPPING 0
#define WITH_EDITOR 1
#define WITH_SERVER_CODE 1
#define WITH_PUSH_MODEL 0
#define WITH_CEF3 1
#define WITH_LIVE_CODING 1
#define WITH_XGE_CONTROLLER 1
#define UBT_MODULE_MANIFEST "UE4Editor.modules"
#define UBT_MODULE_MANIFEST_DEBUGGAME "UE4Editor-Win64-DebugGame.modules"
#define UBT_COMPILED_PLATFORM Win64
#define UBT_COMPILED_TARGET Editor
#define UE_APP_NAME "UE4Editor"
#define NDIS_MINIPORT_MAJOR_VERSION 0
#define WIN32 1
#define _WIN32_WINNT 0x0601
#define WINVER 0x0601
#define PLATFORM_WINDOWS 1
#define PLATFORM_MICROSOFT 1
#define OVERRIDE_PLATFORM_HEADER_NAME Windows
#define RHI_RAYTRACING 1
#define NDEBUG 1
#define UE_BUILD_DEVELOPMENT 1
#define UE_IS_ENGINE_MODULE 0
#define UE_PROJECT_NAME MKCC
#define UE_TARGET_NAME MKCCEditor
#define IMPLEMENT_ENCRYPTION_KEY_REGISTRATION()
#define IMPLEMENT_SIGNING_KEY_REGISTRATION()
#define DEPRECATED_FORGAME DEPRECATED
#define UE_DEPRECATED_FORGAME UE_DEPRECATED
#define COREUOBJECT_API DLLIMPORT
#define UE_ENABLE_ICU 1
#define WITH_VS_PERF_PROFILER 0
#define WITH_DIRECTXMATH 0
#define WITH_MALLOC_STOMP 1
#define CORE_API DLLIMPORT
#define TRACELOG_API DLLIMPORT
#define INCLUDE_CHAOS 0
#define WITH_PHYSX 1
#define WITH_CHAOS 0
#define WITH_CHAOS_CLOTHING 0
#define WITH_CHAOS_NEEDS_TO_BE_FIXED 0
#define PHYSICS_INTERFACE_PHYSX 1
#define WITH_APEX 1
#define WITH_APEX_CLOTHING 1
#define WITH_CLOTH_COLLISION_DETECTION 1
#define WITH_PHYSX_COOKING 1
#define WITH_NVCLOTH 1
#define WITH_CUSTOM_SQ_STRUCTURE 0
#define WITH_IMMEDIATE_PHYSX 0
#define GPUPARTICLE_LOCAL_VF_ONLY 0
#define ENGINE_API DLLIMPORT
#define NETCORE_API DLLIMPORT
#define APPLICATIONCORE_API DLLIMPORT
#define RHI_API DLLIMPORT
#define JSON_API DLLIMPORT
#define WITH_FREETYPE 1
#define SLATECORE_API DLLIMPORT
#define INPUTCORE_API DLLIMPORT
#define SLATE_API DLLIMPORT
#define WITH_UNREALPNG 1
#define WITH_UNREALJPEG 1
#define WITH_UNREALEXR 1
#define IMAGEWRAPPER_API DLLIMPORT
#define MESSAGING_API DLLIMPORT
#define MESSAGINGCOMMON_API DLLIMPORT
#define RENDERCORE_API DLLIMPORT
#define ANALYTICSET_API DLLIMPORT
#define ANALYTICS_API DLLIMPORT
#define SOCKETS_PACKAGE 1
#define SOCKETS_API DLLIMPORT
#define ASSETREGISTRY_API DLLIMPORT
#define ENGINEMESSAGES_API DLLIMPORT
#define ENGINESETTINGS_API DLLIMPORT
#define SYNTHBENCHMARK_API DLLIMPORT
#define RENDERER_API DLLIMPORT
#define GAMEPLAYTAGS_API DLLIMPORT
#define PACKETHANDLER_API DLLIMPORT
#define RELIABILITYHANDLERCOMPONENT_API DLLIMPORT
#define AUDIOPLATFORMCONFIGURATION_API DLLIMPORT
#define MESHDESCRIPTION_API DLLIMPORT
#define STATICMESHDESCRIPTION_API DLLIMPORT
#define PAKFILE_API DLLIMPORT
#define RSA_API DLLIMPORT
#define NETWORKREPLAYSTREAMING_API DLLIMPORT
#define INCLUDE_CHAOS 0
#define WITH_PHYSX 1
#define WITH_CHAOS 0
#define WITH_CHAOS_CLOTHING 0
#define WITH_CHAOS_NEEDS_TO_BE_FIXED 0
#define PHYSICS_INTERFACE_PHYSX 1
#define WITH_APEX 1
#define WITH_APEX_CLOTHING 1
#define WITH_CLOTH_COLLISION_DETECTION 1
#define WITH_PHYSX_COOKING 1
#define WITH_NVCLOTH 1
#define WITH_CUSTOM_SQ_STRUCTURE 0
#define WITH_IMMEDIATE_PHYSX 0
#define PHYSICSCORE_API DLLIMPORT
#define COMPILE_WITHOUT_UNREAL_SUPPORT 0
#define INCLUDE_CHAOS 0
#define CHAOS_MEMORY_TRACKING 0
#define CHAOS_API DLLIMPORT
#define COMPILE_WITHOUT_UNREAL_SUPPORT 0
#define INCLUDE_CHAOS 0
#define CHAOS_CHECKED 0
#define CHAOSCORE_API DLLIMPORT
#define INTEL_ISPC 1
#define VORONOI_API DLLIMPORT
#define FIELDSYSTEMCORE_API DLLIMPORT
#define WITH_PHYSX_RELEASE 0
#define UE_PHYSX_SUFFIX PROFILE
#define UE_APEX_SUFFIX PROFILE
#define APEX_UE4 1
#define APEX_STATICALLY_LINKED 0
#define WITH_APEX_LEGACY 1
#define SIGNALPROCESSING_API DLLIMPORT
#define AUDIOEXTENSIONS_API DLLIMPORT
#define AUDIOMIXERCORE_API DLLIMPORT
#define INCLUDE_CHAOS 0
#define WITH_PHYSX 1
#define WITH_CHAOS 0
#define WITH_CHAOS_CLOTHING 0
#define WITH_CHAOS_NEEDS_TO_BE_FIXED 0
#define PHYSICS_INTERFACE_PHYSX 1
#define WITH_APEX 1
#define WITH_APEX_CLOTHING 1
#define WITH_CLOTH_COLLISION_DETECTION 1
#define WITH_PHYSX_COOKING 1
#define WITH_NVCLOTH 1
#define WITH_CUSTOM_SQ_STRUCTURE 0
#define WITH_IMMEDIATE_PHYSX 0
#define WITH_RECAST 1
#define UNREALED_API DLLIMPORT
#define DIRECTORYWATCHER_API DLLIMPORT
#define DOCUMENTATION_API DLLIMPORT
#define LOAD_PLUGINS_FOR_TARGET_PLATFORMS 1
#define PROJECTS_API DLLIMPORT
#define SANDBOXFILE_API DLLIMPORT
#define EDITORSTYLE_API DLLIMPORT
#define SOURCE_CONTROL_WITH_SLATE 1
#define SOURCECONTROL_API DLLIMPORT
#define UNREALEDMESSAGES_API DLLIMPORT
#define GAMEPLAYDEBUGGER_API DLLIMPORT
#define BLUEPRINTGRAPH_API DLLIMPORT
#define EDITORSUBSYSTEM_API DLLIMPORT
#define HTTP_PACKAGE 1
#define CURL_ENABLE_DEBUG_CALLBACK 1
#define CURL_ENABLE_NO_TIMEOUTS_OPTION 1
#define HTTP_API DLLIMPORT
#define UNREALAUDIO_API DLLIMPORT
#define FUNCTIONALTESTING_API DLLIMPORT
#define AUTOMATIONCONTROLLER_API DLLIMPORT
#define LOCALIZATION_API DLLIMPORT
#define WITH_SNDFILE_IO 1
#define AUDIOEDITOR_API DLLIMPORT
#define AUDIOMIXER_API DLLIMPORT
#define TARGETPLATFORM_API DLLIMPORT
#define LEVELEDITOR_API DLLIMPORT
#define SETTINGS_API DLLIMPORT
#define INTROTUTORIALS_API DLLIMPORT
#define HEADMOUNTEDDISPLAY_API DLLIMPORT
#define VREDITOR_API DLLIMPORT
#define COMMONMENUEXTENSIONS_API DLLIMPORT
#define INCLUDE_CHAOS 0
#define WITH_PHYSX 1
#define WITH_CHAOS 0
#define WITH_CHAOS_CLOTHING 0
#define WITH_CHAOS_NEEDS_TO_BE_FIXED 0
#define PHYSICS_INTERFACE_PHYSX 1
#define WITH_APEX 1
#define WITH_APEX_CLOTHING 1
#define WITH_CLOTH_COLLISION_DETECTION 1
#define WITH_PHYSX_COOKING 1
#define WITH_NVCLOTH 1
#define WITH_CUSTOM_SQ_STRUCTURE 0
#define WITH_IMMEDIATE_PHYSX 0
#define LANDSCAPE_API DLLIMPORT
#define PROPERTYEDITOR_API DLLIMPORT
#define ACTORPICKERMODE_API DLLIMPORT
#define SCENEDEPTHPICKERMODE_API DLLIMPORT
#define DETAILCUSTOMIZATIONS_API DLLIMPORT
#define CLASSVIEWER_API DLLIMPORT
#define GRAPHEDITOR_API DLLIMPORT
#define STRUCTVIEWER_API DLLIMPORT
#define CONTENTBROWSER_API DLLIMPORT
#define UELIBSAMPLERATE_API DLLIMPORT
#define ENABLE_HTTP_FOR_NFS 1
#define NETWORKFILESYSTEM_API DLLIMPORT
#define UMG_API DLLIMPORT
#define MOVIESCENE_API DLLIMPORT
#define TIMEMANAGEMENT_API DLLIMPORT
#define MOVIESCENETRACKS_API DLLIMPORT
#define ANIMATIONCORE_API DLLIMPORT
#define PROPERTYPATH_API DLLIMPORT
#define INCLUDE_CHAOS 0
#define WITH_PHYSX 1
#define WITH_CHAOS 0
#define WITH_CHAOS_CLOTHING 0
#define WITH_CHAOS_NEEDS_TO_BE_FIXED 0
#define PHYSICS_INTERFACE_PHYSX 1
#define WITH_APEX 1
#define WITH_APEX_CLOTHING 1
#define WITH_CLOTH_COLLISION_DETECTION 1
#define WITH_PHYSX_COOKING 1
#define WITH_NVCLOTH 1
#define WITH_CUSTOM_SQ_STRUCTURE 0
#define WITH_IMMEDIATE_PHYSX 0
#define WITH_RECAST 1
#define NAVIGATIONSYSTEM_API DLLIMPORT
#define MESHBUILDER_API DLLIMPORT
#define MATERIALSHADERQUALITYSETTINGS_API DLLIMPORT
#define INTERACTIVETOOLSFRAMEWORK_API DLLIMPORT
#define TOOLMENUSEDITOR_API DLLIMPORT
#define WITH_OGGVORBIS 1
#define XAUDIO2_API DLLIMPORT
#define AUDIOMIXERXAUDIO2_API DLLIMPORT
#define ASSETTAGSEDITOR_API DLLIMPORT
#define COLLECTIONMANAGER_API DLLIMPORT
#define ADDCONTENTDIALOG_API DLLIMPORT
#define USE_EMBREE 1
#define MESHUTILITIES_API DLLIMPORT
#define MESHMERGEUTILITIES_API DLLIMPORT
#define HIERARCHICALLODUTILITIES_API DLLIMPORT
#define MESHREDUCTIONINTERFACE_API DLLIMPORT
#define ASSETTOOLS_API DLLIMPORT
#define KISMETCOMPILER_API DLLIMPORT
#define GAMEPLAYTASKS_API DLLIMPORT
#define WITH_RECAST 1
#define WITH_GAMEPLAY_DEBUGGER 1
#define AIMODULE_API DLLIMPORT
#define KISMET_API DLLIMPORT
#define INCLUDE_CHAOS 0
#define WITH_PHYSX 1
#define WITH_CHAOS 0
#define WITH_CHAOS_CLOTHING 0
#define WITH_CHAOS_NEEDS_TO_BE_FIXED 0
#define PHYSICS_INTERFACE_PHYSX 1
#define WITH_APEX 1
#define WITH_APEX_CLOTHING 1
#define WITH_CLOTH_COLLISION_DETECTION 1
#define WITH_PHYSX_COOKING 1
#define WITH_NVCLOTH 1
#define WITH_CUSTOM_SQ_STRUCTURE 0
#define WITH_IMMEDIATE_PHYSX 0
#define PHYSICSSQ_API DLLIMPORT
#define COMPILE_WITHOUT_UNREAL_SUPPORT 0
#define CHAOSSOLVERS_API DLLIMPORT
#define GEOMETRYCOLLECTIONCORE_API DLLIMPORT
#define GEOMETRYCOLLECTIONSIMULATIONCORE_API DLLIMPORT
#define INCLUDE_CHAOS 0
#define WITH_PHYSX 1
#define WITH_CHAOS 0
#define WITH_CHAOS_CLOTHING 0
#define WITH_CHAOS_NEEDS_TO_BE_FIXED 0
#define PHYSICS_INTERFACE_PHYSX 1
#define WITH_APEX 1
#define WITH_APEX_CLOTHING 1
#define WITH_CLOTH_COLLISION_DETECTION 1
#define WITH_PHYSX_COOKING 1
#define WITH_NVCLOTH 1
#define WITH_CUSTOM_SQ_STRUCTURE 0
#define WITH_IMMEDIATE_PHYSX 0
#define CLOTHINGSYSTEMRUNTIMEINTERFACE_API DLLIMPORT
#define QRCODE_API DLLEXPORT
@@ -0,0 +1,13 @@
{
"RemapUnityFiles":
{
"Module.QRcode.cpp.obj": [
"QRcode.cpp.obj",
"QRCodeBlueprintFunctionLibrary.cpp.obj"
],
"Module.QRcode.gen.cpp.obj": [
"QRcode.init.gen.cpp.obj",
"QRCodeBlueprintFunctionLibrary.gen.cpp.obj"
]
}
}
@@ -0,0 +1,3 @@
// This file is automatically generated at compile-time to include some subset of the user-created cpp files.
#include "D:/UE4Projects/MKCC/Plugins/QRCode-master/Source/QRcode/Private/QRcode.cpp"
#include "D:/UE4Projects/MKCC/Plugins/QRCode-master/Source/QRcode/Private/QRCodeBlueprintFunctionLibrary.cpp"
@@ -0,0 +1,275 @@
/Zc:inline
/nologo
/Oi
/c
/Gw
/Gy
/Zm1000
/wd4819
/D_CRT_STDIO_LEGACY_WIDE_SPECIFIERS=1
/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1
/D_WINDLL
/D_DISABLE_EXTENDED_ALIGNED_STORAGE
/source-charset:utf-8
/execution-charset:utf-8
/Ox
/Ot
/GF
/Ob2
/errorReport:prompt
/EHsc
/Z7
/MD
/bigobj
/fp:fast
/Zo
/Zp8
/we4456
/we4458
/we4459
/wd4463
/we4668
/wd4244
/wd4838
/I .
/I D:\UE4Projects\MKCC\Plugins\QRCode-master\Source\QRcode\Private
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\CoreUObject
/I Runtime
/I Runtime\CoreUObject\Public
/I Runtime\TraceLog\Public
/I Runtime\Core\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Engine
/I Runtime\Engine\Classes
/I Runtime\Engine\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\NetCore
/I Runtime\Net
/I Runtime\Net\Core\Classes
/I Runtime\Net\Core\Public
/I Runtime\ApplicationCore\Public
/I Runtime\RHI\Public
/I Runtime\Json\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\SlateCore
/I Runtime\SlateCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\InputCore
/I Runtime\InputCore\Classes
/I Runtime\InputCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Slate
/I Runtime\Slate\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ImageWrapper
/I Runtime\ImageWrapper\Public
/I Runtime\Messaging\Public
/I Runtime\MessagingCommon\Public
/I Runtime\RenderCore\Public
/I Runtime\Analytics
/I Runtime\Analytics\AnalyticsET\Public
/I Runtime\Analytics\Analytics\Public
/I Runtime\Sockets\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AssetRegistry
/I Runtime\AssetRegistry\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\EngineMessages
/I Runtime\EngineMessages\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\EngineSettings
/I Runtime\EngineSettings\Classes
/I Runtime\EngineSettings\Public
/I Runtime\SynthBenchmark\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Renderer
/I Runtime\Renderer\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayTags
/I Runtime\GameplayTags\Classes
/I Runtime\GameplayTags\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\PacketHandler
/I Runtime\PacketHandlers
/I Runtime\PacketHandlers\PacketHandler\Classes
/I Runtime\PacketHandlers\PacketHandler\Public
/I Runtime\PacketHandlers\ReliabilityHandlerComponent\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AudioPlatformConfiguration
/I Runtime\AudioPlatformConfiguration\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\MeshDescription
/I Runtime\MeshDescription\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\StaticMeshDescription
/I Runtime\StaticMeshDescription\Public
/I Runtime\PakFile\Public
/I Runtime\RSA\Public
/I Runtime\NetworkReplayStreaming
/I Runtime\NetworkReplayStreaming\NetworkReplayStreaming\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\PhysicsCore
/I Runtime\PhysicsCore\Public
/I Runtime\Experimental
/I Runtime\Experimental\Chaos\Public
/I Runtime\Experimental\ChaosCore\Public
/I ThirdParty
/I Runtime\Experimental\Voronoi\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\FieldSystemCore
/I Runtime\Experimental\FieldSystem\Source
/I Runtime\Experimental\FieldSystem\Source\FieldSystemCore\Public
/I Runtime\SignalProcessing\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AudioExtensions
/I Runtime\AudioExtensions\Public
/I Runtime\AudioMixerCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\UnrealEd
/I Editor
/I Programs\UnrealLightmass\Public
/I Developer\Android\AndroidDeviceDetection\Public\Interfaces
/I Editor\UnrealEd\Classes
/I Editor\UnrealEd\Public
/I Developer
/I Developer\DirectoryWatcher\Public
/I Editor\Documentation\Public
/I Runtime\Projects\Public
/I Runtime\SandboxFile\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\EditorStyle
/I Editor\EditorStyle\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\SourceControl
/I Developer\SourceControl\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\UnrealEdMessages
/I Editor\UnrealEdMessages\Classes
/I Editor\UnrealEdMessages\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayDebugger
/I Developer\GameplayDebugger\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\BlueprintGraph
/I Editor\BlueprintGraph\Classes
/I Editor\BlueprintGraph\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\EditorSubsystem
/I Editor\EditorSubsystem\Public
/I Runtime\Online
/I Runtime\Online\HTTP\Public
/I Runtime\UnrealAudio\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\FunctionalTesting
/I Developer\FunctionalTesting\Classes
/I Developer\FunctionalTesting\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AutomationController
/I Developer\AutomationController\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Localization
/I Developer\Localization\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AudioEditor
/I Editor\AudioEditor\Classes
/I Editor\AudioEditor\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AudioMixer
/I Runtime\AudioMixer\Classes
/I Runtime\AudioMixer\Public
/I Developer\TargetPlatform\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\LevelEditor
/I Editor\LevelEditor\Public
/I Developer\Settings\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\IntroTutorials
/I Editor\IntroTutorials\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\HeadMountedDisplay
/I Runtime\HeadMountedDisplay\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\VREditor
/I Editor\VREditor
/I Editor\VREditor\Public
/I Editor\CommonMenuExtensions\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Landscape
/I Runtime\Landscape\Classes
/I Runtime\Landscape\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\PropertyEditor
/I Editor\PropertyEditor\Public
/I Editor\ActorPickerMode\Public
/I Editor\SceneDepthPickerMode\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\DetailCustomizations
/I Editor\DetailCustomizations\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ClassViewer
/I Editor\ClassViewer\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GraphEditor
/I Editor\GraphEditor\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\StructViewer
/I Editor\StructViewer\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ContentBrowser
/I Editor\ContentBrowser\Public
/I ThirdParty\libSampleRate\Public
/I Runtime\NetworkFileSystem\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\UMG
/I Runtime\UMG\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\MovieScene
/I Runtime\MovieScene\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\TimeManagement
/I Runtime\TimeManagement\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\MovieSceneTracks
/I Runtime\MovieSceneTracks\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AnimationCore
/I Runtime\AnimationCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\PropertyPath
/I Runtime\PropertyPath\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\NavigationSystem
/I Runtime\NavigationSystem\Public
/I Developer\MeshBuilder\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\MaterialShaderQualitySettings
/I Runtime\MaterialShaderQualitySettings\Classes
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\InteractiveToolsFramework
/I Runtime\Experimental\InteractiveToolsFramework\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ToolMenusEditor
/I Editor\ToolMenusEditor\Public
/I Runtime\Windows
/I Runtime\Windows\XAudio2\Public
/I Editor\AssetTagsEditor\Public
/I Developer\CollectionManager\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AddContentDialog
/I Editor\AddContentDialog\Public
/I ThirdParty\IntelEmbree\Embree2140\Win64\include
/I Developer\MeshUtilities\Public
/I Developer\MeshMergeUtilities\Public
/I Developer\HierarchicalLODUtilities\Public
/I Developer\MeshReductionInterface\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AssetTools
/I Developer\AssetTools\Public
/I Editor\KismetCompiler\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayTasks
/I Runtime\GameplayTasks\Classes
/I Runtime\GameplayTasks\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AIModule
/I Runtime\AIModule\Public
/I Runtime\AIModule\Classes
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Kismet
/I Editor\Kismet\Classes
/I Editor\Kismet\Public
/I Runtime\PhysicsSQ\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ChaosSolvers
/I Runtime\Experimental\ChaosSolvers\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GeometryCollectionCore
/I Runtime\Experimental\GeometryCollectionCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GeometryCollectionSimulationCore
/I Runtime\Experimental\GeometryCollectionSimulationCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ClothingSystemRuntimeInterface
/I Runtime\ClothingSystemRuntimeInterface\Public
/I D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Inc\QRcode
/I D:\UE4Projects\MKCC\Plugins\QRCode-master\Source
/I D:\UE4Projects\MKCC\Plugins\QRCode-master\ThirdParty\QREncode\include
/I D:\UE4Projects\MKCC\Plugins\QRCode-master\Source\QRcode\Public
/I ThirdParty\PhysX3\PxShared\include
/I ThirdParty\PhysX3\PxShared\include\cudamanager
/I ThirdParty\PhysX3\PxShared\include\filebuf
/I ThirdParty\PhysX3\PxShared\include\foundation
/I ThirdParty\PhysX3\PxShared\include\pvd
/I ThirdParty\PhysX3\PxShared\include\task
/I ThirdParty\PhysX3\PhysX_3.4\Include
/I ThirdParty\PhysX3\PhysX_3.4\Include\cooking
/I ThirdParty\PhysX3\PhysX_3.4\Include\common
/I ThirdParty\PhysX3\PhysX_3.4\Include\extensions
/I ThirdParty\PhysX3\PhysX_3.4\Include\geometry
/I ThirdParty\PhysX3\APEX_1.4\include
/I ThirdParty\PhysX3\APEX_1.4\include\clothing
/I ThirdParty\PhysX3\APEX_1.4\include\nvparameterized
/I ThirdParty\PhysX3\APEX_1.4\include\legacy
/I ThirdParty\PhysX3\APEX_1.4\include\PhysX3
/I ThirdParty\PhysX3\APEX_1.4\common\include
/I ThirdParty\PhysX3\APEX_1.4\common\include\autogen
/I ThirdParty\PhysX3\APEX_1.4\framework\include
/I ThirdParty\PhysX3\APEX_1.4\framework\include\autogen
/I ThirdParty\PhysX3\APEX_1.4\shared\general\RenderDebug\public
/I ThirdParty\PhysX3\APEX_1.4\shared\general\PairFilter\include
/I ThirdParty\PhysX3\APEX_1.4\shared\internal\include
/I "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\INCLUDE"
/I "C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um"
/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt"
/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared"
/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um"
/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt"
/FI"D:\UE4Projects\MKCC\Intermediate\Build\Win64\MKCCEditor\Development\Engine\SharedPCH.Engine.ShadowErrors.h"
/Yu"D:\UE4Projects\MKCC\Intermediate\Build\Win64\MKCCEditor\Development\Engine\SharedPCH.Engine.ShadowErrors.h"
/Fp"D:\UE4Projects\MKCC\Intermediate\Build\Win64\MKCCEditor\Development\Engine\SharedPCH.Engine.ShadowErrors.h.pch"
"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Module.QRcode.cpp"
/FI"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Definitions.QRcode.h"
/Fo"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Module.QRcode.cpp.obj"
/TP
/GR-
/W4
@@ -0,0 +1,13 @@
D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Definitions.QRcode.h
D:/UE4Projects/MKCC/Plugins/QRCode-master/Source/QRcode/Private/QRcode.cpp
D:\UE4Projects\MKCC\Plugins\QRCode-master\Source\QRcode\Public\QRcode.h
D:/UE4Projects/MKCC/Plugins/QRCode-master/Source/QRcode/Private/QRCodeBlueprintFunctionLibrary.cpp
D:\UE4Projects\MKCC\Plugins\QRCode-master\Source\QRcode\Public\QRCodeBlueprintFunctionLibrary.h
D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Inc\QRcode\QRCodeBlueprintFunctionLibrary.generated.h
D:\UE4Projects\MKCC\Plugins\QRCode-master\ThirdParty\QREncode\include\qrencode.h
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\INCLUDE\string
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\INCLUDE\cctype
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\INCLUDE\fstream
D:\UE4\UE_4.25\Engine\Source\Runtime\ImageWrapper\Public\IImageWrapper.h
D:\UE4\UE_4.25\Engine\Source\Runtime\ImageWrapper\Public\IImageWrapperModule.h
D:\UE4\UE_4.25\Engine\Source\Runtime\Core\Public\HAL/FileManagerGeneric.h
@@ -0,0 +1,3 @@
// This file is automatically generated at compile-time to include some subset of the user-created cpp files.
#include "D:/UE4Projects/MKCC/Plugins/QRCode-master/Intermediate/Build/Win64/UE4Editor/Inc/QRcode/QRcode.init.gen.cpp"
#include "D:/UE4Projects/MKCC/Plugins/QRCode-master/Intermediate/Build/Win64/UE4Editor/Inc/QRcode/QRCodeBlueprintFunctionLibrary.gen.cpp"
@@ -0,0 +1,275 @@
/Zc:inline
/nologo
/Oi
/c
/Gw
/Gy
/Zm1000
/wd4819
/D_CRT_STDIO_LEGACY_WIDE_SPECIFIERS=1
/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1
/D_WINDLL
/D_DISABLE_EXTENDED_ALIGNED_STORAGE
/source-charset:utf-8
/execution-charset:utf-8
/Ox
/Ot
/GF
/Ob2
/errorReport:prompt
/EHsc
/Z7
/MD
/bigobj
/fp:fast
/Zo
/Zp8
/we4456
/we4458
/we4459
/wd4463
/we4668
/wd4244
/wd4838
/I .
/I D:\UE4Projects\MKCC\Plugins\QRCode-master\Source\QRcode\Private
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\CoreUObject
/I Runtime
/I Runtime\CoreUObject\Public
/I Runtime\TraceLog\Public
/I Runtime\Core\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Engine
/I Runtime\Engine\Classes
/I Runtime\Engine\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\NetCore
/I Runtime\Net
/I Runtime\Net\Core\Classes
/I Runtime\Net\Core\Public
/I Runtime\ApplicationCore\Public
/I Runtime\RHI\Public
/I Runtime\Json\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\SlateCore
/I Runtime\SlateCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\InputCore
/I Runtime\InputCore\Classes
/I Runtime\InputCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Slate
/I Runtime\Slate\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ImageWrapper
/I Runtime\ImageWrapper\Public
/I Runtime\Messaging\Public
/I Runtime\MessagingCommon\Public
/I Runtime\RenderCore\Public
/I Runtime\Analytics
/I Runtime\Analytics\AnalyticsET\Public
/I Runtime\Analytics\Analytics\Public
/I Runtime\Sockets\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AssetRegistry
/I Runtime\AssetRegistry\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\EngineMessages
/I Runtime\EngineMessages\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\EngineSettings
/I Runtime\EngineSettings\Classes
/I Runtime\EngineSettings\Public
/I Runtime\SynthBenchmark\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Renderer
/I Runtime\Renderer\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayTags
/I Runtime\GameplayTags\Classes
/I Runtime\GameplayTags\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\PacketHandler
/I Runtime\PacketHandlers
/I Runtime\PacketHandlers\PacketHandler\Classes
/I Runtime\PacketHandlers\PacketHandler\Public
/I Runtime\PacketHandlers\ReliabilityHandlerComponent\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AudioPlatformConfiguration
/I Runtime\AudioPlatformConfiguration\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\MeshDescription
/I Runtime\MeshDescription\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\StaticMeshDescription
/I Runtime\StaticMeshDescription\Public
/I Runtime\PakFile\Public
/I Runtime\RSA\Public
/I Runtime\NetworkReplayStreaming
/I Runtime\NetworkReplayStreaming\NetworkReplayStreaming\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\PhysicsCore
/I Runtime\PhysicsCore\Public
/I Runtime\Experimental
/I Runtime\Experimental\Chaos\Public
/I Runtime\Experimental\ChaosCore\Public
/I ThirdParty
/I Runtime\Experimental\Voronoi\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\FieldSystemCore
/I Runtime\Experimental\FieldSystem\Source
/I Runtime\Experimental\FieldSystem\Source\FieldSystemCore\Public
/I Runtime\SignalProcessing\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AudioExtensions
/I Runtime\AudioExtensions\Public
/I Runtime\AudioMixerCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\UnrealEd
/I Editor
/I Programs\UnrealLightmass\Public
/I Developer\Android\AndroidDeviceDetection\Public\Interfaces
/I Editor\UnrealEd\Classes
/I Editor\UnrealEd\Public
/I Developer
/I Developer\DirectoryWatcher\Public
/I Editor\Documentation\Public
/I Runtime\Projects\Public
/I Runtime\SandboxFile\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\EditorStyle
/I Editor\EditorStyle\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\SourceControl
/I Developer\SourceControl\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\UnrealEdMessages
/I Editor\UnrealEdMessages\Classes
/I Editor\UnrealEdMessages\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayDebugger
/I Developer\GameplayDebugger\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\BlueprintGraph
/I Editor\BlueprintGraph\Classes
/I Editor\BlueprintGraph\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\EditorSubsystem
/I Editor\EditorSubsystem\Public
/I Runtime\Online
/I Runtime\Online\HTTP\Public
/I Runtime\UnrealAudio\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\FunctionalTesting
/I Developer\FunctionalTesting\Classes
/I Developer\FunctionalTesting\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AutomationController
/I Developer\AutomationController\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Localization
/I Developer\Localization\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AudioEditor
/I Editor\AudioEditor\Classes
/I Editor\AudioEditor\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AudioMixer
/I Runtime\AudioMixer\Classes
/I Runtime\AudioMixer\Public
/I Developer\TargetPlatform\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\LevelEditor
/I Editor\LevelEditor\Public
/I Developer\Settings\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\IntroTutorials
/I Editor\IntroTutorials\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\HeadMountedDisplay
/I Runtime\HeadMountedDisplay\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\VREditor
/I Editor\VREditor
/I Editor\VREditor\Public
/I Editor\CommonMenuExtensions\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Landscape
/I Runtime\Landscape\Classes
/I Runtime\Landscape\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\PropertyEditor
/I Editor\PropertyEditor\Public
/I Editor\ActorPickerMode\Public
/I Editor\SceneDepthPickerMode\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\DetailCustomizations
/I Editor\DetailCustomizations\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ClassViewer
/I Editor\ClassViewer\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GraphEditor
/I Editor\GraphEditor\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\StructViewer
/I Editor\StructViewer\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ContentBrowser
/I Editor\ContentBrowser\Public
/I ThirdParty\libSampleRate\Public
/I Runtime\NetworkFileSystem\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\UMG
/I Runtime\UMG\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\MovieScene
/I Runtime\MovieScene\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\TimeManagement
/I Runtime\TimeManagement\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\MovieSceneTracks
/I Runtime\MovieSceneTracks\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AnimationCore
/I Runtime\AnimationCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\PropertyPath
/I Runtime\PropertyPath\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\NavigationSystem
/I Runtime\NavigationSystem\Public
/I Developer\MeshBuilder\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\MaterialShaderQualitySettings
/I Runtime\MaterialShaderQualitySettings\Classes
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\InteractiveToolsFramework
/I Runtime\Experimental\InteractiveToolsFramework\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ToolMenusEditor
/I Editor\ToolMenusEditor\Public
/I Runtime\Windows
/I Runtime\Windows\XAudio2\Public
/I Editor\AssetTagsEditor\Public
/I Developer\CollectionManager\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AddContentDialog
/I Editor\AddContentDialog\Public
/I ThirdParty\IntelEmbree\Embree2140\Win64\include
/I Developer\MeshUtilities\Public
/I Developer\MeshMergeUtilities\Public
/I Developer\HierarchicalLODUtilities\Public
/I Developer\MeshReductionInterface\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AssetTools
/I Developer\AssetTools\Public
/I Editor\KismetCompiler\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GameplayTasks
/I Runtime\GameplayTasks\Classes
/I Runtime\GameplayTasks\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\AIModule
/I Runtime\AIModule\Public
/I Runtime\AIModule\Classes
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\Kismet
/I Editor\Kismet\Classes
/I Editor\Kismet\Public
/I Runtime\PhysicsSQ\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ChaosSolvers
/I Runtime\Experimental\ChaosSolvers\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GeometryCollectionCore
/I Runtime\Experimental\GeometryCollectionCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\GeometryCollectionSimulationCore
/I Runtime\Experimental\GeometryCollectionSimulationCore\Public
/I ..\Intermediate\Build\Win64\UE4Editor\Inc\ClothingSystemRuntimeInterface
/I Runtime\ClothingSystemRuntimeInterface\Public
/I D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Inc\QRcode
/I D:\UE4Projects\MKCC\Plugins\QRCode-master\Source
/I D:\UE4Projects\MKCC\Plugins\QRCode-master\ThirdParty\QREncode\include
/I D:\UE4Projects\MKCC\Plugins\QRCode-master\Source\QRcode\Public
/I ThirdParty\PhysX3\PxShared\include
/I ThirdParty\PhysX3\PxShared\include\cudamanager
/I ThirdParty\PhysX3\PxShared\include\filebuf
/I ThirdParty\PhysX3\PxShared\include\foundation
/I ThirdParty\PhysX3\PxShared\include\pvd
/I ThirdParty\PhysX3\PxShared\include\task
/I ThirdParty\PhysX3\PhysX_3.4\Include
/I ThirdParty\PhysX3\PhysX_3.4\Include\cooking
/I ThirdParty\PhysX3\PhysX_3.4\Include\common
/I ThirdParty\PhysX3\PhysX_3.4\Include\extensions
/I ThirdParty\PhysX3\PhysX_3.4\Include\geometry
/I ThirdParty\PhysX3\APEX_1.4\include
/I ThirdParty\PhysX3\APEX_1.4\include\clothing
/I ThirdParty\PhysX3\APEX_1.4\include\nvparameterized
/I ThirdParty\PhysX3\APEX_1.4\include\legacy
/I ThirdParty\PhysX3\APEX_1.4\include\PhysX3
/I ThirdParty\PhysX3\APEX_1.4\common\include
/I ThirdParty\PhysX3\APEX_1.4\common\include\autogen
/I ThirdParty\PhysX3\APEX_1.4\framework\include
/I ThirdParty\PhysX3\APEX_1.4\framework\include\autogen
/I ThirdParty\PhysX3\APEX_1.4\shared\general\RenderDebug\public
/I ThirdParty\PhysX3\APEX_1.4\shared\general\PairFilter\include
/I ThirdParty\PhysX3\APEX_1.4\shared\internal\include
/I "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\INCLUDE"
/I "C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um"
/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt"
/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared"
/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um"
/I "C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt"
/FI"D:\UE4Projects\MKCC\Intermediate\Build\Win64\MKCCEditor\Development\Engine\SharedPCH.Engine.ShadowErrors.h"
/Yu"D:\UE4Projects\MKCC\Intermediate\Build\Win64\MKCCEditor\Development\Engine\SharedPCH.Engine.ShadowErrors.h"
/Fp"D:\UE4Projects\MKCC\Intermediate\Build\Win64\MKCCEditor\Development\Engine\SharedPCH.Engine.ShadowErrors.h.pch"
"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Module.QRcode.gen.cpp"
/FI"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Definitions.QRcode.h"
/Fo"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Module.QRcode.gen.cpp.obj"
/TP
/GR-
/W4
@@ -0,0 +1,7 @@
D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Definitions.QRcode.h
D:/UE4Projects/MKCC/Plugins/QRCode-master/Intermediate/Build/Win64/UE4Editor/Inc/QRcode/QRcode.init.gen.cpp
D:\UE4\UE_4.25\Engine\Source\Runtime\CoreUObject\Public\UObject/GeneratedCppIncludes.h
D:\UE4\UE_4.25\Engine\Source\Runtime\CoreUObject\Public\UObject/MetaData.h
D:/UE4Projects/MKCC/Plugins/QRCode-master/Intermediate/Build/Win64/UE4Editor/Inc/QRcode/QRCodeBlueprintFunctionLibrary.gen.cpp
D:\UE4Projects\MKCC\Plugins\QRCode-master\Source\QRcode/Public/QRCodeBlueprintFunctionLibrary.h
D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Inc\QRcode\QRCodeBlueprintFunctionLibrary.generated.h
@@ -0,0 +1,74 @@
/MANIFEST:EMBED
/MANIFESTINPUT:D:\UE4\UE_4.25\Engine\Build\Windows\Resources\Default-Win64.manifest
/NOLOGO
/DEBUG
/errorReport:prompt
/MACHINE:x64
/SUBSYSTEM:WINDOWS
/FIXED:No
/NXCOMPAT
/STACK:12000000
/DELAY:UNLOAD
/DLL
/PDBALTPATH:%_PDB%
/OPT:NOREF
/OPT:NOICF
/INCREMENTAL:NO
/ignore:4199
/ignore:4099
/DELAYLOAD:"d3d12.dll"
/DELAYLOAD:"DBGHELP.DLL"
/LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\lib\x64"
/LIBPATH:"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64"
/LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\ucrt\x64"
/LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\um\x64"
/NODEFAULTLIB:"LIBCMT"
/NODEFAULTLIB:"LIBCPMT"
/NODEFAULTLIB:"LIBCMTD"
/NODEFAULTLIB:"LIBCPMTD"
/NODEFAULTLIB:"MSVCRTD"
/NODEFAULTLIB:"MSVCPRTD"
/NODEFAULTLIB:"LIBC"
/NODEFAULTLIB:"LIBCP"
/NODEFAULTLIB:"LIBCD"
/NODEFAULTLIB:"LIBCPD"
/FUNCTIONPADMIN
"D:\UE4Projects\MKCC\Intermediate\Build\Win64\MKCCEditor\Development\Engine\SharedPCH.Engine.ShadowErrors.h.obj"
"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Module.QRcode.cpp.obj"
"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Module.QRcode.gen.cpp.obj"
"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Default.rc2.res"
"delayimp.lib"
"wininet.lib"
"rpcrt4.lib"
"ws2_32.lib"
"dbghelp.lib"
"comctl32.lib"
"Winmm.lib"
"kernel32.lib"
"user32.lib"
"gdi32.lib"
"winspool.lib"
"comdlg32.lib"
"advapi32.lib"
"shell32.lib"
"ole32.lib"
"oleaut32.lib"
"uuid.lib"
"odbc32.lib"
"odbccp32.lib"
"netapi32.lib"
"iphlpapi.lib"
"setupapi.lib"
"dwmapi.lib"
"imm32.lib"
"D:\UE4Projects\MKCC\Plugins\QRCode-master\ThirdParty\QREncode\lib\Win64\QRCode.lib"
"D:\UE4\UE_4.25\Engine\Intermediate\Build\Win64\UE4Editor\Development\CoreUObject\UE4Editor-CoreUObject.lib"
"D:\UE4\UE_4.25\Engine\Intermediate\Build\Win64\UE4Editor\Development\Engine\UE4Editor-Engine.lib"
"D:\UE4\UE_4.25\Engine\Intermediate\Build\Win64\UE4Editor\Development\Slate\UE4Editor-Slate.lib"
"D:\UE4\UE_4.25\Engine\Intermediate\Build\Win64\UE4Editor\Development\SlateCore\UE4Editor-SlateCore.lib"
"D:\UE4\UE_4.25\Engine\Intermediate\Build\Win64\UE4Editor\Development\Core\UE4Editor-Core.lib"
/OUT:"D:\UE4Projects\MKCC\Plugins\QRCode-master\Binaries\Win64\UE4Editor-QRcode.dll"
/IMPLIB:"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\UE4Editor-QRcode.suppressed.lib"
/PDB:"D:\UE4Projects\MKCC\Plugins\QRCode-master\Binaries\Win64\UE4Editor-QRcode.pdb"
/ignore:4078
/INCLUDE:IMPLEMENT_MODULE_QRcode
@@ -0,0 +1,14 @@
/NOLOGO
/errorReport:prompt
/MACHINE:x64
/SUBSYSTEM:WINDOWS
/DEF
/NAME:"UE4Editor-QRcode.dll"
/IGNORE:4221
/NODEFAULTLIB
"D:\UE4Projects\MKCC\Intermediate\Build\Win64\MKCCEditor\Development\Engine\SharedPCH.Engine.ShadowErrors.h.obj"
"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Module.QRcode.cpp.obj"
"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Module.QRcode.gen.cpp.obj"
"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\Default.rc2.res"
/OUT:"D:\UE4Projects\MKCC\Plugins\QRCode-master\Intermediate\Build\Win64\UE4Editor\Development\QRcode\UE4Editor-QRcode.lib"
/INCLUDE:IMPLEMENT_MODULE_QRcode
@@ -0,0 +1,446 @@
// Copyright Epic Games, Inc. All Rights Reserved.
/*===========================================================================
Generated code exported from UnrealHeaderTool.
DO NOT modify this manually! Edit the corresponding .h files instead!
===========================================================================*/
#include "UObject/GeneratedCppIncludes.h"
#include "QRcode/Public/QRCodeBlueprintFunctionLibrary.h"
#ifdef _MSC_VER
#pragma warning (push)
#pragma warning (disable : 4883)
#endif
PRAGMA_DISABLE_DEPRECATION_WARNINGS
void EmptyLinkFunctionForGeneratedCodeQRCodeBlueprintFunctionLibrary() {}
// Cross Module References
QRCODE_API UEnum* Z_Construct_UEnum_QRcode_QR_IMAGE_FORMAT();
UPackage* Z_Construct_UPackage__Script_QRcode();
QRCODE_API UClass* Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_NoRegister();
QRCODE_API UClass* Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary();
ENGINE_API UClass* Z_Construct_UClass_UBlueprintFunctionLibrary();
ENGINE_API UClass* Z_Construct_UClass_UTexture2D_NoRegister();
// End Cross Module References
static UEnum* QR_IMAGE_FORMAT_StaticEnum()
{
static UEnum* Singleton = nullptr;
if (!Singleton)
{
Singleton = GetStaticEnum(Z_Construct_UEnum_QRcode_QR_IMAGE_FORMAT, Z_Construct_UPackage__Script_QRcode(), TEXT("QR_IMAGE_FORMAT"));
}
return Singleton;
}
template<> QRCODE_API UEnum* StaticEnum<QR_IMAGE_FORMAT>()
{
return QR_IMAGE_FORMAT_StaticEnum();
}
static FCompiledInDeferEnum Z_CompiledInDeferEnum_UEnum_QR_IMAGE_FORMAT(QR_IMAGE_FORMAT_StaticEnum, TEXT("/Script/QRcode"), TEXT("QR_IMAGE_FORMAT"), false, nullptr, nullptr);
uint32 Get_Z_Construct_UEnum_QRcode_QR_IMAGE_FORMAT_Hash() { return 363512775U; }
UEnum* Z_Construct_UEnum_QRcode_QR_IMAGE_FORMAT()
{
#if WITH_HOT_RELOAD
UPackage* Outer = Z_Construct_UPackage__Script_QRcode();
static UEnum* ReturnEnum = FindExistingEnumIfHotReloadOrDynamic(Outer, TEXT("QR_IMAGE_FORMAT"), 0, Get_Z_Construct_UEnum_QRcode_QR_IMAGE_FORMAT_Hash(), false);
#else
static UEnum* ReturnEnum = nullptr;
#endif // WITH_HOT_RELOAD
if (!ReturnEnum)
{
static const UE4CodeGen_Private::FEnumeratorParam Enumerators[] = {
{ "QR_IMAGE_FORMAT::PNG", (int64)QR_IMAGE_FORMAT::PNG },
{ "QR_IMAGE_FORMAT::JPEG", (int64)QR_IMAGE_FORMAT::JPEG },
};
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Enum_MetaDataParams[] = {
{ "JPEG.Comment", "/** Joint Photographic Experts Group. */" },
{ "JPEG.Name", "QR_IMAGE_FORMAT::JPEG" },
{ "JPEG.ToolTip", "Joint Photographic Experts Group." },
{ "ModuleRelativePath", "Public/QRCodeBlueprintFunctionLibrary.h" },
{ "PNG.Comment", "/** Portable Network Graphics. */" },
{ "PNG.Name", "QR_IMAGE_FORMAT::PNG" },
{ "PNG.ToolTip", "Portable Network Graphics." },
};
#endif
static const UE4CodeGen_Private::FEnumParams EnumParams = {
(UObject*(*)())Z_Construct_UPackage__Script_QRcode,
nullptr,
"QR_IMAGE_FORMAT",
"QR_IMAGE_FORMAT",
Enumerators,
UE_ARRAY_COUNT(Enumerators),
RF_Public|RF_Transient|RF_MarkAsNative,
UE4CodeGen_Private::EDynamicType::NotDynamic,
(uint8)UEnum::ECppForm::EnumClass,
METADATA_PARAMS(Enum_MetaDataParams, UE_ARRAY_COUNT(Enum_MetaDataParams))
};
UE4CodeGen_Private::ConstructUEnum(ReturnEnum, EnumParams);
}
return ReturnEnum;
}
DEFINE_FUNCTION(UQRCodeBlueprintFunctionLibrary::execGenerateQRCodeImageByType)
{
P_GET_PROPERTY_REF(FIntProperty,Z_Param_Out_Width);
P_GET_PROPERTY_REF(FIntProperty,Z_Param_Out_Height);
P_GET_PROPERTY(FStrProperty,Z_Param_Name);
P_GET_PROPERTY(FStrProperty,Z_Param_Outfile);
P_GET_ENUM(QR_IMAGE_FORMAT,Z_Param_ImageFormat);
P_GET_PROPERTY(FIntProperty,Z_Param_Margin);
P_FINISH;
P_NATIVE_BEGIN;
*(bool*)Z_Param__Result=UQRCodeBlueprintFunctionLibrary::GenerateQRCodeImageByType(Z_Param_Out_Width,Z_Param_Out_Height,Z_Param_Name,Z_Param_Outfile,QR_IMAGE_FORMAT(Z_Param_ImageFormat),Z_Param_Margin);
P_NATIVE_END;
}
DEFINE_FUNCTION(UQRCodeBlueprintFunctionLibrary::execGenerateQRCodeTexture)
{
P_GET_PROPERTY_REF(FIntProperty,Z_Param_Out_Width);
P_GET_PROPERTY_REF(FIntProperty,Z_Param_Out_Height);
P_GET_PROPERTY(FStrProperty,Z_Param_Name);
P_GET_PROPERTY(FIntProperty,Z_Param_Margin);
P_FINISH;
P_NATIVE_BEGIN;
*(UTexture2D**)Z_Param__Result=UQRCodeBlueprintFunctionLibrary::GenerateQRCodeTexture(Z_Param_Out_Width,Z_Param_Out_Height,Z_Param_Name,Z_Param_Margin);
P_NATIVE_END;
}
DEFINE_FUNCTION(UQRCodeBlueprintFunctionLibrary::execGenerateQRCodeBitmap)
{
P_GET_PROPERTY_REF(FIntProperty,Z_Param_Out_Width);
P_GET_PROPERTY_REF(FIntProperty,Z_Param_Out_Height);
P_GET_PROPERTY(FStrProperty,Z_Param_Name);
P_GET_PROPERTY(FStrProperty,Z_Param_Outfile);
P_GET_PROPERTY(FIntProperty,Z_Param_Margin);
P_FINISH;
P_NATIVE_BEGIN;
UQRCodeBlueprintFunctionLibrary::GenerateQRCodeBitmap(Z_Param_Out_Width,Z_Param_Out_Height,Z_Param_Name,Z_Param_Outfile,Z_Param_Margin);
P_NATIVE_END;
}
void UQRCodeBlueprintFunctionLibrary::StaticRegisterNativesUQRCodeBlueprintFunctionLibrary()
{
UClass* Class = UQRCodeBlueprintFunctionLibrary::StaticClass();
static const FNameNativePtrPair Funcs[] = {
{ "GenerateQRCodeBitmap", &UQRCodeBlueprintFunctionLibrary::execGenerateQRCodeBitmap },
{ "GenerateQRCodeImageByType", &UQRCodeBlueprintFunctionLibrary::execGenerateQRCodeImageByType },
{ "GenerateQRCodeTexture", &UQRCodeBlueprintFunctionLibrary::execGenerateQRCodeTexture },
};
FNativeFunctionRegistrar::RegisterFunctions(Class, Funcs, UE_ARRAY_COUNT(Funcs));
}
struct Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics
{
struct QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeBitmap_Parms
{
int32 Width;
int32 Height;
FString Name;
FString Outfile;
int32 Margin;
};
static const UE4CodeGen_Private::FIntPropertyParams NewProp_Margin;
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam NewProp_Outfile_MetaData[];
#endif
static const UE4CodeGen_Private::FStrPropertyParams NewProp_Outfile;
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam NewProp_Name_MetaData[];
#endif
static const UE4CodeGen_Private::FStrPropertyParams NewProp_Name;
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam NewProp_Height_MetaData[];
#endif
static const UE4CodeGen_Private::FIntPropertyParams NewProp_Height;
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam NewProp_Width_MetaData[];
#endif
static const UE4CodeGen_Private::FIntPropertyParams NewProp_Width;
static const UE4CodeGen_Private::FPropertyParamsBase* const PropPointers[];
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam Function_MetaDataParams[];
#endif
static const UE4CodeGen_Private::FFunctionParams FuncParams;
};
const UE4CodeGen_Private::FIntPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Margin = { "Margin", nullptr, (EPropertyFlags)0x0010000000000080, UE4CodeGen_Private::EPropertyGenFlags::Int, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeBitmap_Parms, Margin), METADATA_PARAMS(nullptr, 0) };
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Outfile_MetaData[] = {
{ "NativeConst", "" },
};
#endif
const UE4CodeGen_Private::FStrPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Outfile = { "Outfile", nullptr, (EPropertyFlags)0x0010000000000080, UE4CodeGen_Private::EPropertyGenFlags::Str, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeBitmap_Parms, Outfile), METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Outfile_MetaData, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Outfile_MetaData)) };
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Name_MetaData[] = {
{ "NativeConst", "" },
};
#endif
const UE4CodeGen_Private::FStrPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Name = { "Name", nullptr, (EPropertyFlags)0x0010000000000080, UE4CodeGen_Private::EPropertyGenFlags::Str, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeBitmap_Parms, Name), METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Name_MetaData, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Name_MetaData)) };
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Height_MetaData[] = {
{ "NativeConst", "" },
};
#endif
const UE4CodeGen_Private::FIntPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Height = { "Height", nullptr, (EPropertyFlags)0x0010000008000182, UE4CodeGen_Private::EPropertyGenFlags::Int, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeBitmap_Parms, Height), METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Height_MetaData, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Height_MetaData)) };
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Width_MetaData[] = {
{ "NativeConst", "" },
};
#endif
const UE4CodeGen_Private::FIntPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Width = { "Width", nullptr, (EPropertyFlags)0x0010000008000182, UE4CodeGen_Private::EPropertyGenFlags::Int, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeBitmap_Parms, Width), METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Width_MetaData, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Width_MetaData)) };
const UE4CodeGen_Private::FPropertyParamsBase* const Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::PropPointers[] = {
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Margin,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Outfile,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Name,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Height,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::NewProp_Width,
};
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::Function_MetaDataParams[] = {
{ "Category", "UQRCodeBlueprintFunctionLibrary|GenerateQRCodeBitmap" },
{ "CPP_Default_Margin", "0" },
{ "ModuleRelativePath", "Public/QRCodeBlueprintFunctionLibrary.h" },
};
#endif
const UE4CodeGen_Private::FFunctionParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::FuncParams = { (UObject*(*)())Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary, nullptr, "GenerateQRCodeBitmap", nullptr, nullptr, sizeof(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeBitmap_Parms), Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::PropPointers, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::PropPointers), RF_Public|RF_Transient|RF_MarkAsNative, (EFunctionFlags)0x04422401, 0, 0, METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::Function_MetaDataParams, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::Function_MetaDataParams)) };
UFunction* Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap()
{
static UFunction* ReturnFunction = nullptr;
if (!ReturnFunction)
{
UE4CodeGen_Private::ConstructUFunction(ReturnFunction, Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap_Statics::FuncParams);
}
return ReturnFunction;
}
struct Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics
{
struct QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeImageByType_Parms
{
int32 Width;
int32 Height;
FString Name;
FString Outfile;
QR_IMAGE_FORMAT ImageFormat;
int32 Margin;
bool ReturnValue;
};
static void NewProp_ReturnValue_SetBit(void* Obj);
static const UE4CodeGen_Private::FBoolPropertyParams NewProp_ReturnValue;
static const UE4CodeGen_Private::FIntPropertyParams NewProp_Margin;
static const UE4CodeGen_Private::FEnumPropertyParams NewProp_ImageFormat;
static const UE4CodeGen_Private::FBytePropertyParams NewProp_ImageFormat_Underlying;
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam NewProp_Outfile_MetaData[];
#endif
static const UE4CodeGen_Private::FStrPropertyParams NewProp_Outfile;
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam NewProp_Name_MetaData[];
#endif
static const UE4CodeGen_Private::FStrPropertyParams NewProp_Name;
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam NewProp_Height_MetaData[];
#endif
static const UE4CodeGen_Private::FIntPropertyParams NewProp_Height;
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam NewProp_Width_MetaData[];
#endif
static const UE4CodeGen_Private::FIntPropertyParams NewProp_Width;
static const UE4CodeGen_Private::FPropertyParamsBase* const PropPointers[];
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam Function_MetaDataParams[];
#endif
static const UE4CodeGen_Private::FFunctionParams FuncParams;
};
void Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_ReturnValue_SetBit(void* Obj)
{
((QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeImageByType_Parms*)Obj)->ReturnValue = 1;
}
const UE4CodeGen_Private::FBoolPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_ReturnValue = { "ReturnValue", nullptr, (EPropertyFlags)0x0010000000000580, UE4CodeGen_Private::EPropertyGenFlags::Bool | UE4CodeGen_Private::EPropertyGenFlags::NativeBool, RF_Public|RF_Transient|RF_MarkAsNative, 1, sizeof(bool), sizeof(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeImageByType_Parms), &Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_ReturnValue_SetBit, METADATA_PARAMS(nullptr, 0) };
const UE4CodeGen_Private::FIntPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Margin = { "Margin", nullptr, (EPropertyFlags)0x0010000000000080, UE4CodeGen_Private::EPropertyGenFlags::Int, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeImageByType_Parms, Margin), METADATA_PARAMS(nullptr, 0) };
const UE4CodeGen_Private::FEnumPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_ImageFormat = { "ImageFormat", nullptr, (EPropertyFlags)0x0010000000000080, UE4CodeGen_Private::EPropertyGenFlags::Enum, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeImageByType_Parms, ImageFormat), Z_Construct_UEnum_QRcode_QR_IMAGE_FORMAT, METADATA_PARAMS(nullptr, 0) };
const UE4CodeGen_Private::FBytePropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_ImageFormat_Underlying = { "UnderlyingType", nullptr, (EPropertyFlags)0x0000000000000000, UE4CodeGen_Private::EPropertyGenFlags::Byte, RF_Public|RF_Transient|RF_MarkAsNative, 1, 0, nullptr, METADATA_PARAMS(nullptr, 0) };
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Outfile_MetaData[] = {
{ "NativeConst", "" },
};
#endif
const UE4CodeGen_Private::FStrPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Outfile = { "Outfile", nullptr, (EPropertyFlags)0x0010000000000080, UE4CodeGen_Private::EPropertyGenFlags::Str, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeImageByType_Parms, Outfile), METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Outfile_MetaData, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Outfile_MetaData)) };
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Name_MetaData[] = {
{ "NativeConst", "" },
};
#endif
const UE4CodeGen_Private::FStrPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Name = { "Name", nullptr, (EPropertyFlags)0x0010000000000080, UE4CodeGen_Private::EPropertyGenFlags::Str, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeImageByType_Parms, Name), METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Name_MetaData, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Name_MetaData)) };
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Height_MetaData[] = {
{ "NativeConst", "" },
};
#endif
const UE4CodeGen_Private::FIntPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Height = { "Height", nullptr, (EPropertyFlags)0x0010000008000182, UE4CodeGen_Private::EPropertyGenFlags::Int, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeImageByType_Parms, Height), METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Height_MetaData, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Height_MetaData)) };
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Width_MetaData[] = {
{ "NativeConst", "" },
};
#endif
const UE4CodeGen_Private::FIntPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Width = { "Width", nullptr, (EPropertyFlags)0x0010000008000182, UE4CodeGen_Private::EPropertyGenFlags::Int, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeImageByType_Parms, Width), METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Width_MetaData, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Width_MetaData)) };
const UE4CodeGen_Private::FPropertyParamsBase* const Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::PropPointers[] = {
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_ReturnValue,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Margin,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_ImageFormat,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_ImageFormat_Underlying,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Outfile,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Name,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Height,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::NewProp_Width,
};
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::Function_MetaDataParams[] = {
{ "Category", "UQRCodeBlueprintFunctionLibrary|GenerateQRCodeBitmap" },
{ "CPP_Default_Margin", "0" },
{ "ModuleRelativePath", "Public/QRCodeBlueprintFunctionLibrary.h" },
};
#endif
const UE4CodeGen_Private::FFunctionParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::FuncParams = { (UObject*(*)())Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary, nullptr, "GenerateQRCodeImageByType", nullptr, nullptr, sizeof(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeImageByType_Parms), Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::PropPointers, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::PropPointers), RF_Public|RF_Transient|RF_MarkAsNative, (EFunctionFlags)0x04422401, 0, 0, METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::Function_MetaDataParams, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::Function_MetaDataParams)) };
UFunction* Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType()
{
static UFunction* ReturnFunction = nullptr;
if (!ReturnFunction)
{
UE4CodeGen_Private::ConstructUFunction(ReturnFunction, Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType_Statics::FuncParams);
}
return ReturnFunction;
}
struct Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics
{
struct QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeTexture_Parms
{
int32 Width;
int32 Height;
FString Name;
int32 Margin;
UTexture2D* ReturnValue;
};
static const UE4CodeGen_Private::FObjectPropertyParams NewProp_ReturnValue;
static const UE4CodeGen_Private::FIntPropertyParams NewProp_Margin;
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam NewProp_Name_MetaData[];
#endif
static const UE4CodeGen_Private::FStrPropertyParams NewProp_Name;
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam NewProp_Height_MetaData[];
#endif
static const UE4CodeGen_Private::FIntPropertyParams NewProp_Height;
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam NewProp_Width_MetaData[];
#endif
static const UE4CodeGen_Private::FIntPropertyParams NewProp_Width;
static const UE4CodeGen_Private::FPropertyParamsBase* const PropPointers[];
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam Function_MetaDataParams[];
#endif
static const UE4CodeGen_Private::FFunctionParams FuncParams;
};
const UE4CodeGen_Private::FObjectPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_ReturnValue = { "ReturnValue", nullptr, (EPropertyFlags)0x0010000000000580, UE4CodeGen_Private::EPropertyGenFlags::Object, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeTexture_Parms, ReturnValue), Z_Construct_UClass_UTexture2D_NoRegister, METADATA_PARAMS(nullptr, 0) };
const UE4CodeGen_Private::FIntPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Margin = { "Margin", nullptr, (EPropertyFlags)0x0010000000000080, UE4CodeGen_Private::EPropertyGenFlags::Int, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeTexture_Parms, Margin), METADATA_PARAMS(nullptr, 0) };
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Name_MetaData[] = {
{ "NativeConst", "" },
};
#endif
const UE4CodeGen_Private::FStrPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Name = { "Name", nullptr, (EPropertyFlags)0x0010000000000080, UE4CodeGen_Private::EPropertyGenFlags::Str, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeTexture_Parms, Name), METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Name_MetaData, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Name_MetaData)) };
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Height_MetaData[] = {
{ "NativeConst", "" },
};
#endif
const UE4CodeGen_Private::FIntPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Height = { "Height", nullptr, (EPropertyFlags)0x0010000008000182, UE4CodeGen_Private::EPropertyGenFlags::Int, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeTexture_Parms, Height), METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Height_MetaData, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Height_MetaData)) };
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Width_MetaData[] = {
{ "NativeConst", "" },
};
#endif
const UE4CodeGen_Private::FIntPropertyParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Width = { "Width", nullptr, (EPropertyFlags)0x0010000008000182, UE4CodeGen_Private::EPropertyGenFlags::Int, RF_Public|RF_Transient|RF_MarkAsNative, 1, STRUCT_OFFSET(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeTexture_Parms, Width), METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Width_MetaData, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Width_MetaData)) };
const UE4CodeGen_Private::FPropertyParamsBase* const Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::PropPointers[] = {
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_ReturnValue,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Margin,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Name,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Height,
(const UE4CodeGen_Private::FPropertyParamsBase*)&Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::NewProp_Width,
};
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::Function_MetaDataParams[] = {
{ "Category", "UQRCodeBlueprintFunctionLibrary|GenerateQRCodeTexture" },
{ "CPP_Default_Margin", "0" },
{ "ModuleRelativePath", "Public/QRCodeBlueprintFunctionLibrary.h" },
};
#endif
const UE4CodeGen_Private::FFunctionParams Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::FuncParams = { (UObject*(*)())Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary, nullptr, "GenerateQRCodeTexture", nullptr, nullptr, sizeof(QRCodeBlueprintFunctionLibrary_eventGenerateQRCodeTexture_Parms), Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::PropPointers, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::PropPointers), RF_Public|RF_Transient|RF_MarkAsNative, (EFunctionFlags)0x04422401, 0, 0, METADATA_PARAMS(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::Function_MetaDataParams, UE_ARRAY_COUNT(Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::Function_MetaDataParams)) };
UFunction* Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture()
{
static UFunction* ReturnFunction = nullptr;
if (!ReturnFunction)
{
UE4CodeGen_Private::ConstructUFunction(ReturnFunction, Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture_Statics::FuncParams);
}
return ReturnFunction;
}
UClass* Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_NoRegister()
{
return UQRCodeBlueprintFunctionLibrary::StaticClass();
}
struct Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_Statics
{
static UObject* (*const DependentSingletons[])();
static const FClassFunctionLinkInfo FuncInfo[];
#if WITH_METADATA
static const UE4CodeGen_Private::FMetaDataPairParam Class_MetaDataParams[];
#endif
static const FCppClassTypeInfoStatic StaticCppClassTypeInfo;
static const UE4CodeGen_Private::FClassParams ClassParams;
};
UObject* (*const Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_Statics::DependentSingletons[])() = {
(UObject* (*)())Z_Construct_UClass_UBlueprintFunctionLibrary,
(UObject* (*)())Z_Construct_UPackage__Script_QRcode,
};
const FClassFunctionLinkInfo Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_Statics::FuncInfo[] = {
{ &Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeBitmap, "GenerateQRCodeBitmap" }, // 784060285
{ &Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeImageByType, "GenerateQRCodeImageByType" }, // 2896095576
{ &Z_Construct_UFunction_UQRCodeBlueprintFunctionLibrary_GenerateQRCodeTexture, "GenerateQRCodeTexture" }, // 4287101756
};
#if WITH_METADATA
const UE4CodeGen_Private::FMetaDataPairParam Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_Statics::Class_MetaDataParams[] = {
{ "Comment", "/**\n * \n */" },
{ "IncludePath", "QRCodeBlueprintFunctionLibrary.h" },
{ "ModuleRelativePath", "Public/QRCodeBlueprintFunctionLibrary.h" },
};
#endif
const FCppClassTypeInfoStatic Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_Statics::StaticCppClassTypeInfo = {
TCppClassTypeTraits<UQRCodeBlueprintFunctionLibrary>::IsAbstract,
};
const UE4CodeGen_Private::FClassParams Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_Statics::ClassParams = {
&UQRCodeBlueprintFunctionLibrary::StaticClass,
nullptr,
&StaticCppClassTypeInfo,
DependentSingletons,
FuncInfo,
nullptr,
nullptr,
UE_ARRAY_COUNT(DependentSingletons),
UE_ARRAY_COUNT(FuncInfo),
0,
0,
0x001000A0u,
METADATA_PARAMS(Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_Statics::Class_MetaDataParams, UE_ARRAY_COUNT(Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_Statics::Class_MetaDataParams))
};
UClass* Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary()
{
static UClass* OuterClass = nullptr;
if (!OuterClass)
{
UE4CodeGen_Private::ConstructUClass(OuterClass, Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_Statics::ClassParams);
}
return OuterClass;
}
IMPLEMENT_CLASS(UQRCodeBlueprintFunctionLibrary, 1219563497);
template<> QRCODE_API UClass* StaticClass<UQRCodeBlueprintFunctionLibrary>()
{
return UQRCodeBlueprintFunctionLibrary::StaticClass();
}
static FCompiledInDefer Z_CompiledInDefer_UClass_UQRCodeBlueprintFunctionLibrary(Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary, &UQRCodeBlueprintFunctionLibrary::StaticClass, TEXT("/Script/QRcode"), TEXT("UQRCodeBlueprintFunctionLibrary"), false, nullptr, nullptr, nullptr);
DEFINE_VTABLE_PTR_HELPER_CTOR(UQRCodeBlueprintFunctionLibrary);
PRAGMA_ENABLE_DEPRECATION_WARNINGS
#ifdef _MSC_VER
#pragma warning (pop)
#endif
@@ -0,0 +1,116 @@
// Copyright Epic Games, Inc. All Rights Reserved.
/*===========================================================================
Generated code exported from UnrealHeaderTool.
DO NOT modify this manually! Edit the corresponding .h files instead!
===========================================================================*/
#include "UObject/ObjectMacros.h"
#include "UObject/ScriptMacros.h"
PRAGMA_DISABLE_DEPRECATION_WARNINGS
enum class QR_IMAGE_FORMAT : uint8;
class UTexture2D;
#ifdef QRCODE_QRCodeBlueprintFunctionLibrary_generated_h
#error "QRCodeBlueprintFunctionLibrary.generated.h already included, missing '#pragma once' in QRCodeBlueprintFunctionLibrary.h"
#endif
#define QRCODE_QRCodeBlueprintFunctionLibrary_generated_h
#define MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_SPARSE_DATA
#define MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_RPC_WRAPPERS \
\
DECLARE_FUNCTION(execGenerateQRCodeImageByType); \
DECLARE_FUNCTION(execGenerateQRCodeTexture); \
DECLARE_FUNCTION(execGenerateQRCodeBitmap);
#define MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_RPC_WRAPPERS_NO_PURE_DECLS \
\
DECLARE_FUNCTION(execGenerateQRCodeImageByType); \
DECLARE_FUNCTION(execGenerateQRCodeTexture); \
DECLARE_FUNCTION(execGenerateQRCodeBitmap);
#define MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_INCLASS_NO_PURE_DECLS \
private: \
static void StaticRegisterNativesUQRCodeBlueprintFunctionLibrary(); \
friend struct Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_Statics; \
public: \
DECLARE_CLASS(UQRCodeBlueprintFunctionLibrary, UBlueprintFunctionLibrary, COMPILED_IN_FLAGS(0), CASTCLASS_None, TEXT("/Script/QRcode"), NO_API) \
DECLARE_SERIALIZER(UQRCodeBlueprintFunctionLibrary)
#define MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_INCLASS \
private: \
static void StaticRegisterNativesUQRCodeBlueprintFunctionLibrary(); \
friend struct Z_Construct_UClass_UQRCodeBlueprintFunctionLibrary_Statics; \
public: \
DECLARE_CLASS(UQRCodeBlueprintFunctionLibrary, UBlueprintFunctionLibrary, COMPILED_IN_FLAGS(0), CASTCLASS_None, TEXT("/Script/QRcode"), NO_API) \
DECLARE_SERIALIZER(UQRCodeBlueprintFunctionLibrary)
#define MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_STANDARD_CONSTRUCTORS \
/** Standard constructor, called after all reflected properties have been initialized */ \
NO_API UQRCodeBlueprintFunctionLibrary(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); \
DEFINE_DEFAULT_OBJECT_INITIALIZER_CONSTRUCTOR_CALL(UQRCodeBlueprintFunctionLibrary) \
DECLARE_VTABLE_PTR_HELPER_CTOR(NO_API, UQRCodeBlueprintFunctionLibrary); \
DEFINE_VTABLE_PTR_HELPER_CTOR_CALLER(UQRCodeBlueprintFunctionLibrary); \
private: \
/** Private move- and copy-constructors, should never be used */ \
NO_API UQRCodeBlueprintFunctionLibrary(UQRCodeBlueprintFunctionLibrary&&); \
NO_API UQRCodeBlueprintFunctionLibrary(const UQRCodeBlueprintFunctionLibrary&); \
public:
#define MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_ENHANCED_CONSTRUCTORS \
/** Standard constructor, called after all reflected properties have been initialized */ \
NO_API UQRCodeBlueprintFunctionLibrary(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()) : Super(ObjectInitializer) { }; \
private: \
/** Private move- and copy-constructors, should never be used */ \
NO_API UQRCodeBlueprintFunctionLibrary(UQRCodeBlueprintFunctionLibrary&&); \
NO_API UQRCodeBlueprintFunctionLibrary(const UQRCodeBlueprintFunctionLibrary&); \
public: \
DECLARE_VTABLE_PTR_HELPER_CTOR(NO_API, UQRCodeBlueprintFunctionLibrary); \
DEFINE_VTABLE_PTR_HELPER_CTOR_CALLER(UQRCodeBlueprintFunctionLibrary); \
DEFINE_DEFAULT_OBJECT_INITIALIZER_CONSTRUCTOR_CALL(UQRCodeBlueprintFunctionLibrary)
#define MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_PRIVATE_PROPERTY_OFFSET
#define MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_24_PROLOG
#define MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_GENERATED_BODY_LEGACY \
PRAGMA_DISABLE_DEPRECATION_WARNINGS \
public: \
MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_PRIVATE_PROPERTY_OFFSET \
MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_SPARSE_DATA \
MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_RPC_WRAPPERS \
MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_INCLASS \
MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_STANDARD_CONSTRUCTORS \
public: \
PRAGMA_ENABLE_DEPRECATION_WARNINGS
#define MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_GENERATED_BODY \
PRAGMA_DISABLE_DEPRECATION_WARNINGS \
public: \
MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_PRIVATE_PROPERTY_OFFSET \
MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_SPARSE_DATA \
MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_RPC_WRAPPERS_NO_PURE_DECLS \
MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_INCLASS_NO_PURE_DECLS \
MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h_27_ENHANCED_CONSTRUCTORS \
private: \
PRAGMA_ENABLE_DEPRECATION_WARNINGS
template<> QRCODE_API UClass* StaticClass<class UQRCodeBlueprintFunctionLibrary>();
#undef CURRENT_FILE_ID
#define CURRENT_FILE_ID MKCC_Plugins_QRCode_master_Source_QRcode_Public_QRCodeBlueprintFunctionLibrary_h
#define FOREACH_ENUM_QR_IMAGE_FORMAT(op) \
op(QR_IMAGE_FORMAT::PNG) \
op(QR_IMAGE_FORMAT::JPEG)
enum class QR_IMAGE_FORMAT : uint8;
template<> QRCODE_API UEnum* StaticEnum<QR_IMAGE_FORMAT>();
PRAGMA_ENABLE_DEPRECATION_WARNINGS
@@ -0,0 +1,35 @@
// Copyright Epic Games, Inc. All Rights Reserved.
/*===========================================================================
Generated code exported from UnrealHeaderTool.
DO NOT modify this manually! Edit the corresponding .h files instead!
===========================================================================*/
#include "UObject/GeneratedCppIncludes.h"
#ifdef _MSC_VER
#pragma warning (push)
#pragma warning (disable : 4883)
#endif
PRAGMA_DISABLE_DEPRECATION_WARNINGS
void EmptyLinkFunctionForGeneratedCodeQRcode_init() {}
UPackage* Z_Construct_UPackage__Script_QRcode()
{
static UPackage* ReturnPackage = nullptr;
if (!ReturnPackage)
{
static const UE4CodeGen_Private::FPackageParams PackageParams = {
"/Script/QRcode",
nullptr,
0,
PKG_CompiledIn | 0x00000000,
0x700F69D4,
0x4781761E,
METADATA_PARAMS(nullptr, 0)
};
UE4CodeGen_Private::ConstructUPackage(ReturnPackage, PackageParams);
}
return ReturnPackage;
}
PRAGMA_ENABLE_DEPRECATION_WARNINGS
#ifdef _MSC_VER
#pragma warning (pop)
#endif
@@ -0,0 +1,10 @@
// Copyright Epic Games, Inc. All Rights Reserved.
/*===========================================================================
Generated code exported from UnrealHeaderTool.
DO NOT modify this manually! Edit the corresponding .h files instead!
===========================================================================*/
#pragma once
@@ -0,0 +1 @@
D:\UE4Projects\MKCC\Plugins\QRCode-master\Source\QRcode\Public\QRCodeBlueprintFunctionLibrary.h
+165
View File
@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
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.
+23
View File
@@ -0,0 +1,23 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.0",
"FriendlyName": "QRcode",
"Description": "QRcode create",
"Category": "Other",
"CreatedBy": "hzm",
"CreatedByURL": "",
"DocsURL": "",
"MarketplaceURL": "",
"SupportURL": "",
"CanContainContent": true,
"IsBetaVersion": true,
"Installed": false,
"Modules": [
{
"Name": "QRcode",
"Type": "Runtime",
"LoadingPhase": "PreLoadingScreen"
}
]
}
+32
View File
@@ -0,0 +1,32 @@
# QRCode
create QRCode in UE4(Tested in 4.21 Editor and Game)
use UQRCodeBlueprintFunctionLibrary::GenerateQRCodeTexture to create dynamic QRCode Texture.
use UQRCodeBlueprintFunctionLibrary::GenerateQRCodeBitmap to create dynamic QRcode and save as bmp.
use UQRCodeBlueprintFunctionLibrary::GenerateQRCodeImageByType to create dynamic QRcode and save as png or jpg.
# Instructions for use
1. create Plugins directory
2. git clone https://github.com/hzm/QRCode.git
3. Put the folder in the plugins directory
4. Enable this plugins in the editor
5. Generate visual studio project files
6. Add the QRcode module to the project's buid.cs file. such as
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "QRcode" });
# Special Thanks
ThirdParty
libqrencode 4.0.2https://github.com/fukuchi/libqrencode
reference
https://wiki.unrealengine.com/Dynamic_Textures
https://blog.csdn.net/kupepoem/article/details/43307387
https://blog.csdn.net/u014532636/article/details/77848185
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

@@ -0,0 +1,355 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "QRCodeBlueprintFunctionLibrary.h"
#include "qrencode.h"
#include <string>
#include <fstream>
#include "IImageWrapper.h"
//#include "ModuleManager.h"
#include "ImageWrapper/Public/IImageWrapper.h"
#include "IImageWrapperModule.h"
//#include "FileManagerGeneric.h"
#include "HAL/FileManagerGeneric.h"
using namespace std;
#define BI_RGB 0
//#pragma pack(push, 2)必须要加。bfType是2个字节,对应“BM”,后4个字节是文件大小,又对应4字节。
//如果不设定对齐方式,而按默认的8字节或4字节对应,这些属性就错位了,而别人又是按标准来读取的,
//对齐方式不同,自然出错。一般情况下的编程之所以不考虑这些问题,是因为读取和保存都是你个人完成的,
//对齐方式是一样的,自然不出错。而这里你生成的图片可能还要供别人使用,自然要严格遵守标准。
#pragma pack(push, 2)//必须得写,否则sizeof得不到正确的结果
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef long LONG;
typedef struct {
WORD bfType;//位图文件的类型,必须为BM(1-2字节)
DWORD bfSize;//位图文件的大小,以字节为单位(3-6字节,低位在前)
WORD bfReserved1;//位图文件保留字,必须为0(7-8字节)
WORD bfReserved2;//位图文件保留字,必须为0(9-10字节)
DWORD bfOffBits;//位图数据的起始位置,以相对于位图(11-14字节,低位在前)
} BITMAPFILEHEADER;
typedef struct {
DWORD biSize;//本结构所占用字节数(15-18字节)
LONG biWidth;//位图的宽度,以像素为单位(19-22字节)
LONG biHeight;//位图的高度,以像素为单位(23-26字节)
WORD biPlanes;//目标设备的级别,必须为1(27-28字节)
WORD biBitCount;//每个像素所需的位数,必须是1(双色),4(16色),8(256色)16(高彩色)或24(真彩色)之一,(29-30字节)
DWORD biCompression;//位图压缩类型,必须是0(不压缩),1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一,31-34字节)
DWORD biSizeImage;//位图的大小(其中包含了为了补齐行数是4的倍数而添加的空字节),以字节为单位(35-38字节)
LONG biXPelsPerMeter;//位图水平分辨率,每米像素数(39-42字节)
LONG biYPelsPerMeter;//位图垂直分辨率,每米像素数(43-46字节)
DWORD biClrUsed;//位图实际使用的颜色表中的颜色数(47-50字节)
DWORD biClrImportant;//位图显示过程中重要的颜色数(51-54字节)
} BITMAPINFOHEADER;
#pragma pack(pop)
void UQRCodeBlueprintFunctionLibrary::GenerateQRCodeBitmap(const int32& Width, const int32& Height, const FString& Name, const FString& Outfile, int32 Margin /* = 0 */)
{
std::string StdName(TCHAR_TO_UTF8(*Name));
const char* QRCodeStr = StdName.c_str();
QRcode* QRCodePtr = nullptr;
QRCodePtr = QRcode_encodeString(QRCodeStr, 1, QR_ECLEVEL_L, QR_MODE_8, 1);
if (QRCodePtr)
{
uint32 QRWidth, QRWidthAdjustedX, QRHeightAdjustedY, QRDataBytes;
QRWidth = QRCodePtr->width;//矩阵的维数
uint32 ScaleX = (Width - 2 * Margin) / QRWidth;
uint32 ScaleY = (Height - 2 * Margin) / QRWidth;
QRWidthAdjustedX = QRWidth * ScaleX;//水平维度占的像素个数(ScaleX)
QRHeightAdjustedY = QRWidth * ScaleY;//垂直维度占的像素个数(ScaleY)
QRDataBytes = QRWidthAdjustedX * QRHeightAdjustedY * 3;//每一个像素3个字节(BGR)
//create data
uint8* RGBDataPtr = (uint8 *)malloc(QRDataBytes);
if (!RGBDataPtr)
{
printf("out of memory!!");
return;
}
uint8* QRCodeSourceDatas = QRCodePtr->data;
uint8* QRCodeDestData;
memset(RGBDataPtr, 0xFF, QRDataBytes); //分配内存,并且填充为白色
//由于Windows规定一个扫描行所占的字节数必须是4的倍数,这里必须是4的整数倍
int32 WidthAdjusted = Width % 4 ? (Width / 4 + 1) * 4 : Width;
uint32 ImageBytes = WidthAdjusted * Height * 3;
//create bitmap file header
BITMAPFILEHEADER FileHeader;
FileHeader.bfType = 0x4D42; //"BM"
FileHeader.bfReserved1 = 0;
FileHeader.bfReserved2 = 0;
FileHeader.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + ImageBytes;
FileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
//create bitmap info header
BITMAPINFOHEADER InfoHeader = {0};//所有值默认为0
InfoHeader.biSize = sizeof(BITMAPINFOHEADER);
InfoHeader.biWidth = WidthAdjusted;
//说明图象的高度,以象素为单位。注:这个值除了用于描述图像的高度之外,它还有另一个用处,
//就是指明该图像是倒向的位图,还是正向的位图。如果该值是一个正数,说明图像是倒向的,
//如果该值是一个负数,则说明图像是正向的。大多数的BMP文件都是倒向的位图,也就是时,
//高度值是一个正数。(注:当高度值是一个负数时(正向图像),图像将不能被压缩
//(也就是说biCompression成员将不能是BI_RLE8或BI_RLE4)。
InfoHeader.biHeight = -(int32)Height;
InfoHeader.biPlanes = 1;
InfoHeader.biBitCount = 24;
InfoHeader.biCompression = BI_RGB;
InfoHeader.biSizeImage = ImageBytes;
for (uint32 y = 0; y < QRWidth; y++)
{
QRCodeDestData = RGBDataPtr + ScaleY * y * QRWidthAdjustedX * 3;
for (uint32 x = 0; x < QRWidth; x++)
{
if (*QRCodeSourceDatas & 0x01)
{
for (uint32 rectY = 0; rectY < ScaleY; rectY++)
{
for (uint32 rectX = 0; rectX < ScaleX; rectX++)
{
*(QRCodeDestData + rectY * QRWidthAdjustedX * 3 + rectX * 3) = 0;//Blue
*(QRCodeDestData + rectY * QRWidthAdjustedX * 3 + rectX * 3 + 1) = 0;//Green
*(QRCodeDestData + rectY * QRWidthAdjustedX * 3 + rectX * 3 + 2) = 0;//Red
}
}
}
QRCodeDestData += ScaleX * 3;
QRCodeSourceDatas += 1;
}
}
uint8* ImageDataPtr = (uint8 *)malloc(ImageBytes);
memset(ImageDataPtr, 0xFF, ImageBytes); //分配内存,并且填充为白色
for (uint32 y = Margin; y < QRHeightAdjustedY + Margin; y++)
{
for (uint32 x = Margin; x < QRWidthAdjustedX + Margin; x++)
{
for (int32 PixelByte = 0; PixelByte < 3; PixelByte++)
{
uint32 ImageIndex = (y * WidthAdjusted + x) * 3 + PixelByte;
uint32 RGBDataIndex = ((y - Margin) * QRWidthAdjustedX + (x - Margin)) * 3 + PixelByte;
ImageDataPtr[ImageIndex] = RGBDataPtr[RGBDataIndex];
}
}
}
if (!FFileManagerGeneric::Get().DirectoryExists(*Outfile))
{
FFileManagerGeneric::Get().MakeDirectory(*FPaths::GetPath(Outfile), true);
}
FILE* BitmapFile;
if (!(fopen_s(&BitmapFile, TCHAR_TO_UTF8(*Outfile), "wb")))
{
fwrite(&FileHeader, sizeof(BITMAPFILEHEADER), 1, BitmapFile);
fwrite(&InfoHeader, sizeof(BITMAPINFOHEADER), 1, BitmapFile);
fwrite(ImageDataPtr, sizeof(uint8), ImageBytes, BitmapFile);
fclose(BitmapFile);
}
else
{
printf("create file failed!!");
}
QRcode_free(QRCodePtr);
free(RGBDataPtr);
if (Margin > 0)
{
free(ImageDataPtr);
}
}
}
UTexture2D* UQRCodeBlueprintFunctionLibrary::GenerateQRCodeTexture(const int32& Width, const int32& Height, const FString& Name, int32 Margin /* = 0 */)
{
std::string StdName(TCHAR_TO_UTF8(*Name));
const char* QRCodeStr = StdName.c_str();
QRcode* QRCodePtr = nullptr;
QRCodePtr = QRcode_encodeString(QRCodeStr, 1, QR_ECLEVEL_L, QR_MODE_8, 1);
UTexture2D* Texture = nullptr;
if (QRCodePtr)
{
uint32 QRWidth, QRWidthAdjustedX, QRHeightAdjustedY, QRDataBytes;
QRWidth = QRCodePtr->width;//矩阵的维数
uint32 ScaleX = (Width - 2 * Margin) / QRWidth;
uint32 ScaleY = (Height - 2 * Margin) / QRWidth;
QRWidthAdjustedX = QRWidth * ScaleX;//水平维度占的像素个数(ScaleX)
QRHeightAdjustedY = QRWidth * ScaleY;//垂直维度占的像素个数(ScaleY)
QRDataBytes = QRWidthAdjustedX * QRHeightAdjustedY * 3;//每一个像素3个字节(BGR)
uint8* RGBDataPtr = (uint8 *)malloc(QRDataBytes);
if (!RGBDataPtr)
{
printf("out of memory!!");
return Texture;
}
uint8* QRCodeSourceDatas = QRCodePtr->data;
uint8* QRCodeDestData;
memset(RGBDataPtr, 0xFF, QRDataBytes); //分配内存,并且填充为白色
for (uint32 y = 0; y < QRWidth; y++)
{
QRCodeDestData = RGBDataPtr + ScaleY * y * QRWidthAdjustedX * 3;
for (uint32 x = 0; x < QRWidth; x++)
{
if (*QRCodeSourceDatas & 0x01)
{
for (uint32 rectY = 0; rectY < ScaleY; rectY++)
{
for (uint32 rectX = 0; rectX < ScaleX; rectX++)
{
*(QRCodeDestData + rectY * QRWidthAdjustedX * 3 + rectX * 3) = 0;//Blue
*(QRCodeDestData + rectY * QRWidthAdjustedX * 3 + rectX * 3 + 1) = 0;//Green
*(QRCodeDestData + rectY * QRWidthAdjustedX * 3 + rectX * 3 + 2) = 0;//Red
}
}
}
QRCodeDestData += ScaleX * 3;
QRCodeSourceDatas += 1;
}
}
QRcode_free(QRCodePtr);
TArray<uint8> ImageBGRAData;
//for (uint32 i = 0; i < QRDataBytes; i++)
//{
// ImageBGRAData.Add(RGBDataPtr[i]);
// if ((i + 1) % 3 == 0)
// {
// ImageBGRAData.Add(0xFF);//填充Alpha通道为不透明
// }
//}
for (uint32 i = 0; i < (uint32)Width * (uint32)Height * 4; i++)
{
ImageBGRAData.Add(0xFF);
}
for (uint32 y = Margin; y < QRHeightAdjustedY + Margin; y++)
{
for (uint32 x = Margin; x < QRWidthAdjustedX + Margin; x++)
{
for (int32 PixelByte = 0; PixelByte < 3; PixelByte++)
{
uint32 ImageIndex = ( y * Width + x ) * 4 + PixelByte;
uint32 RGBDataIndex = ((y - Margin) * QRWidthAdjustedX + (x - Margin)) * 3 + PixelByte;
ImageBGRAData[ImageIndex] = RGBDataPtr[RGBDataIndex];
}
}
}
free(RGBDataPtr);
IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));
TSharedPtr<IImageWrapper> TargetImageWrapper = ImageWrapperModule.CreateImageWrapper(EImageFormat::BMP);
if (TargetImageWrapper.IsValid())
{
Texture = UTexture2D::CreateTransient(Width, Height, PF_B8G8R8A8);
if (Texture != nullptr)
{
FTexture2DMipMap& Mip = Texture->PlatformData->Mips[0];
void* TextureData = Mip.BulkData.Lock(LOCK_READ_WRITE);
FMemory::Memcpy(TextureData, ImageBGRAData.GetData(), ImageBGRAData.Num());
Mip.BulkData.Unlock();
Texture->UpdateResource();
}
}
}
return Texture;
}
bool UQRCodeBlueprintFunctionLibrary::GenerateQRCodeImageByType(const int32& Width, const int32& Height, const FString& Name, const FString& Outfile, QR_IMAGE_FORMAT ImageFormat, int32 Margin /*= 0*/)
{
std::string StdName(TCHAR_TO_UTF8(*Name));
const char* QRCodeStr = StdName.c_str();
QRcode* QRCodePtr = nullptr;
QRCodePtr = QRcode_encodeString(QRCodeStr, 1, QR_ECLEVEL_L, QR_MODE_8, 1);
UTexture2D* Texture = nullptr;
if (QRCodePtr)
{
uint32 QRWidth, QRWidthAdjustedX, QRHeightAdjustedY, QRDataBytes;
QRWidth = QRCodePtr->width;//矩阵的维数
uint32 ScaleX = (Width - 2 * Margin) / QRWidth;
uint32 ScaleY = (Height - 2 * Margin) / QRWidth;
QRWidthAdjustedX = QRWidth * ScaleX;//水平维度占的像素个数(ScaleX)
QRHeightAdjustedY = QRWidth * ScaleY;//垂直维度占的像素个数(ScaleY)
QRDataBytes = QRWidthAdjustedX * QRHeightAdjustedY * 3;//每一个像素3个字节(BGR)
uint8* RGBDataPtr = (uint8 *)malloc(QRDataBytes);
if (!RGBDataPtr)
{
printf("out of memory!!");
return false;
}
uint8* QRCodeSourceDatas = QRCodePtr->data;
uint8* QRCodeDestData;
memset(RGBDataPtr, 0xFF, QRDataBytes); //分配内存,并且填充为白色
for (uint32 y = 0; y < QRWidth; y++)
{
QRCodeDestData = RGBDataPtr + ScaleY * y * QRWidthAdjustedX * 3;
for (uint32 x = 0; x < QRWidth; x++)
{
if (*QRCodeSourceDatas & 0x01)
{
for (uint32 rectY = 0; rectY < ScaleY; rectY++)
{
for (uint32 rectX = 0; rectX < ScaleX; rectX++)
{
*(QRCodeDestData + rectY * QRWidthAdjustedX * 3 + rectX * 3) = 0;//Blue
*(QRCodeDestData + rectY * QRWidthAdjustedX * 3 + rectX * 3 + 1) = 0;//Green
*(QRCodeDestData + rectY * QRWidthAdjustedX * 3 + rectX * 3 + 2) = 0;//Red
}
}
}
QRCodeDestData += ScaleX * 3;
QRCodeSourceDatas += 1;
}
}
QRcode_free(QRCodePtr);
TArray<uint8> ImageBGRAData;
for (uint32 i = 0; i < (uint32)Width * (uint32)Height * 4; i++)
{
ImageBGRAData.Add(0xFF);
}
for (uint32 y = Margin; y < QRHeightAdjustedY + Margin; y++)
{
for (uint32 x = Margin; x < QRWidthAdjustedX + Margin; x++)
{
for (int32 PixelByte = 0; PixelByte < 3; PixelByte++)
{
uint32 ImageIndex = (y * Width + x) * 4 + PixelByte;
uint32 RGBDataIndex = ((y - Margin) * QRWidthAdjustedX + (x - Margin)) * 3 + PixelByte;
ImageBGRAData[ImageIndex] = RGBDataPtr[RGBDataIndex];
}
}
}
free(RGBDataPtr);
IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));
TSharedPtr<IImageWrapper> TargetImageWrapper = ImageWrapperModule.CreateImageWrapper(EImageFormat(ImageFormat));
if (TargetImageWrapper.IsValid())
{
if (TargetImageWrapper->SetRaw(ImageBGRAData.GetData(), ImageBGRAData.Num(), Width, Height, ERGBFormat::BGRA, 8))
{
const TArray<uint8, FDefaultAllocator64> TagetImageData = TargetImageWrapper->GetCompressed();
if (!FFileManagerGeneric::Get().DirectoryExists(*Outfile))
{
FFileManagerGeneric::Get().MakeDirectory(*FPaths::GetPath(Outfile), true);
}
return FFileHelper::SaveArrayToFile(TagetImageData, *Outfile);
}
}
}
return false;
}
@@ -0,0 +1,20 @@
// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#include "QRcode.h"
#define LOCTEXT_NAMESPACE "FQRcodeModule"
void FQRcodeModule::StartupModule()
{
// This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module
}
void FQRcodeModule::ShutdownModule()
{
// This function may be called during shutdown to clean up your module. For modules that support dynamic reloading,
// we call this function before unloading the module.
}
#undef LOCTEXT_NAMESPACE
IMPLEMENT_MODULE(FQRcodeModule, QRcode)
@@ -0,0 +1,40 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "QRCodeBlueprintFunctionLibrary.generated.h"
UENUM()
enum class QR_IMAGE_FORMAT : uint8
{
/** Portable Network Graphics. */
PNG = 0,
/** Joint Photographic Experts Group. */
JPEG = 1,
};
/**
*
*/
UCLASS()
class QRCODE_API UQRCodeBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "UQRCodeBlueprintFunctionLibrary|GenerateQRCodeBitmap")
static void GenerateQRCodeBitmap(const int32& Width, const int32& Height, const FString& Name, const FString& Outfile, int32 Margin = 0);
UFUNCTION(BlueprintCallable, Category = "UQRCodeBlueprintFunctionLibrary|GenerateQRCodeTexture")
static UTexture2D* GenerateQRCodeTexture(const int32& Width, const int32& Height, const FString& Name, int32 Margin = 0);
UFUNCTION(BlueprintCallable, Category = "UQRCodeBlueprintFunctionLibrary|GenerateQRCodeBitmap")
static bool GenerateQRCodeImageByType(const int32& Width, const int32& Height, const FString& Name, const FString& Outfile, QR_IMAGE_FORMAT ImageFormat, int32 Margin = 0);
};
@@ -0,0 +1,15 @@
// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Modules/ModuleManager.h"
class FQRcodeModule : public IModuleInterface
{
public:
/** IModuleInterface implementation */
virtual void StartupModule() override;
virtual void ShutdownModule() override;
};
@@ -0,0 +1,92 @@
// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
using System.IO;
public class QRcode : ModuleRules
{
private string ModulePath
{
get { return ModuleDirectory; }
}
private string ThirdPartyPath
{
get { return Path.GetFullPath(Path.Combine(ModulePath, "../../ThirdParty/")); }
}
private string BinariesPath
{
get { return Path.GetFullPath(Path.Combine(ModulePath, "../../Binaries/")); }
}
private string QREncodeLibraryPath
{
get { return Path.GetFullPath(Path.Combine(ThirdPartyPath, "QREncode", "lib")); }
}
public QRcode(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
PublicIncludePaths.AddRange(
new string[] {
Path.Combine(ThirdPartyPath, "QREncode", "include"),
// ... add public include paths required here ...
}
);
PrivateIncludePaths.AddRange(
new string[] {
// ... add other private include paths required here ...
}
);
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
// ... add other public dependencies that you statically link with here ...
}
);
PrivateDependencyModuleNames.AddRange(
new string[]
{
"CoreUObject",
"Engine",
"Slate",
"SlateCore",
// ... add private dependencies that you statically link with here ...
}
);
DynamicallyLoadedModuleNames.AddRange(
new string[]
{
// ... add any modules that your module loads dynamically here ...
}
);
LoadQREncodeLib(Target);
}
public bool LoadQREncodeLib(ReadOnlyTargetRules Target)
{
bool isLibrarySupported = false;
if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Win32))
{
isLibrarySupported = true;
string PlatformString = (Target.Platform == UnrealTargetPlatform.Win64) ? "Win64" : "Win32";
PublicAdditionalLibraries.Add(Path.Combine(QREncodeLibraryPath, PlatformString, "QRCode.lib"));
}
return isLibrarySupported;
}
}
@@ -0,0 +1,43 @@
/*
* qrencode - QR Code encoder
*
* Binary sequence class.
* Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
*
* This library 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 2.1 of the License, or any later version.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef BITSTREAM_H
#define BITSTREAM_H
typedef struct {
size_t length;
size_t datasize;
unsigned char *data;
} BitStream;
extern BitStream *BitStream_new(void);
#ifdef WITH_TESTS
extern BitStream *BitStream_newWithBits(size_t size, unsigned char *bits);
#endif
extern int BitStream_append(BitStream *bstream, BitStream *arg);
extern int BitStream_appendNum(BitStream *bstream, size_t bits, unsigned int num);
extern int BitStream_appendBytes(BitStream *bstream, size_t size, unsigned char *data);
#define BitStream_size(__bstream__) (__bstream__->length)
#define BitStream_reset(__bstream__) (__bstream__->length = 0)
extern unsigned char *BitStream_toByte(BitStream *bstream);
extern void BitStream_free(BitStream *bstream);
#endif /* BITSTREAM_H */
@@ -0,0 +1,103 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if using pthread is enabled. */
#undef HAVE_LIBPTHREAD
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if using libpng is enabled. */
#undef HAVE_PNG
/* Define to 1 if using SDL is enabled. */
#undef HAVE_SDL
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the `strdup' function. */
#undef HAVE_STRDUP
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR
/* Major version number */
#undef MAJOR_VERSION
#define MAJOR_VERSION 4
/* Micro version number */
#undef MICRO_VERSION
#define MICRO_VERSION 2
/* Minor version number */
#undef MINOR_VERSION
#define MINOR_VERSION 0
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION
#define VERSION "4.0.2"
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
#undef inline
#endif
/* Define to 'static' if no test programs will be compiled. */
#define STATIC_IN_RELEASE static
#undef WITH_TESTS
@@ -0,0 +1,38 @@
/*
* qrencode - QR Code encoder
*
* Masking.
* Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
*
* This library 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 2.1 of the License, or any later version.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef MASK_H
#define MASK_H
extern unsigned char *Mask_makeMask(unsigned int width, unsigned char *frame, int mask, QRecLevel level);
extern unsigned char *Mask_mask(unsigned int width, unsigned char *frame, QRecLevel level);
#ifdef WITH_TESTS
extern int Mask_calcN2(int width, unsigned char *frame);
extern int Mask_calcN1N3(int length, int *runLength);
extern int Mask_calcRunLengthH(int width, unsigned char *frame, int *runLength);
extern int Mask_calcRunLengthV(int width, unsigned char *frame, int *runLength);
extern int Mask_evaluateSymbol(int width, unsigned char *frame);
extern unsigned int Mask_writeFormatInformation(unsigned int width, unsigned char *frame, int mask, QRecLevel level);
extern unsigned char *Mask_makeMaskedFrame(unsigned int width, unsigned char *frame, int mask);
#endif
#endif /* MASK_H */
@@ -0,0 +1,34 @@
/*
* qrencode - QR Code encoder
*
* Masking for Micro QR Code.
* Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
*
* This library 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 2.1 of the License, or any later version.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef MMASK_H
#define MMASK_H
extern unsigned char *MMask_makeMask(int version, unsigned char *frame, int mask, QRecLevel level);
extern unsigned char *MMask_mask(int version, unsigned char *frame, QRecLevel level);
#ifdef WITH_TESTS
extern int MMask_evaluateSymbol(int width, unsigned char *frame);
extern void MMask_writeFormatInformation(int version, int width, unsigned char *frame, int mask, QRecLevel level);
extern unsigned char *MMask_makeMaskedFrame(int width, unsigned char *frame, int mask);
#endif
#endif /* MMASK_H */
@@ -0,0 +1,150 @@
/*
* qrencode - QR Code encoder
*
* Micro QR Code specification in convenient format.
* Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
*
* This library 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 2.1 of the License, or any later version.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef MQRSPEC_H
#define MQRSPEC_H
#include "qrencode.h"
/******************************************************************************
* Version and capacity
*****************************************************************************/
/**
* Maximum width of a symbol
*/
#define MQRSPEC_WIDTH_MAX 17
/**
* Return maximum data code length (bits) for the version.
* @param version version of the symbol
* @param level error correction level
* @return maximum size (bits)
*/
extern int MQRspec_getDataLengthBit(int version, QRecLevel level);
/**
* Return maximum data code length (bytes) for the version.
* @param version version of the symbol
* @param level error correction level
* @return maximum size (bytes)
*/
extern int MQRspec_getDataLength(int version, QRecLevel level);
/**
* Return maximum error correction code length (bytes) for the version.
* @param version version of the symbol
* @param level error correction level
* @return ECC size (bytes)
*/
extern int MQRspec_getECCLength(int version, QRecLevel level);
/**
* Return a version number that satisfies the input code length.
* @param size input code length (byte)
* @param level error correction level
* @return version number
*/
extern int MQRspec_getMinimumVersion(int size, QRecLevel level);
/**
* Return the width of the symbol for the version.
* @param version version of the symbol
* @return width
*/
extern int MQRspec_getWidth(int version);
/**
* Return the numer of remainder bits.
* @param version version of the symbol
* @return number of remainder bits
*/
extern int MQRspec_getRemainder(int version);
/******************************************************************************
* Length indicator
*****************************************************************************/
/**
* Return the size of length indicator for the mode and version.
* @param mode encode mode
* @param version vesion of the symbol
* @return the size of the appropriate length indicator (bits).
*/
extern int MQRspec_lengthIndicator(QRencodeMode mode, int version);
/**
* Return the maximum length for the mode and version.
* @param mode encode mode
* @param version vesion of the symbol
* @return the maximum length (bytes)
*/
extern int MQRspec_maximumWords(QRencodeMode mode, int version);
/******************************************************************************
* Version information pattern
*****************************************************************************/
/**
* Return BCH encoded version information pattern that is used for the symbol
* of version 7 or greater. Use lower 18 bits.
* @param version vesion of the symbol
* @return BCH encoded version information pattern
*/
extern unsigned int MQRspec_getVersionPattern(int version);
/******************************************************************************
* Format information
*****************************************************************************/
/**
* Return BCH encoded format information pattern.
* @param mask mask number
* @param version version of the symbol
* @param level error correction level
* @return BCH encoded format information pattern
*/
extern unsigned int MQRspec_getFormatInfo(int mask, int version, QRecLevel level);
/******************************************************************************
* Frame
*****************************************************************************/
/**
* Return a copy of initialized frame.
* @param version version of the symbol
* @return Array of unsigned char. You can free it by free().
*/
extern unsigned char *MQRspec_newFrame(int version);
/******************************************************************************
* Mode indicator
*****************************************************************************/
/**
* Mode indicator. See Table 2 in Appendix 1 of JIS X0510:2004, pp.107.
*/
#define MQRSPEC_MODEID_NUM 0
#define MQRSPEC_MODEID_AN 1
#define MQRSPEC_MODEID_8 2
#define MQRSPEC_MODEID_KANJI 3
#endif /* MQRSPEC_H */
@@ -0,0 +1,568 @@
/**
* qrencode - QR Code encoder
*
* Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
*
* This library 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 2.1 of the License, or any later version.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/** \mainpage
* Libqrencode is a library for encoding data in a QR Code symbol, a kind of 2D
* symbology.
*
* \section encoding Encoding
*
* There are two methods to encode data: <b>encoding a string/data</b> or
* <b>encoding a structured data</b>.
*
* \subsection encoding-string Encoding a string/data
* You can encode a string by calling QRcode_encodeString().
* The given string is parsed automatically and encoded. If you want to encode
* data that can be represented as a C string style (NUL terminated), you can
* simply use this way.
*
* If the input data contains Kanji (Shift-JIS) characters and you want to
* encode them as Kanji in QR Code, you should give QR_MODE_KANJI as a hint.
* Otherwise, all of non-alphanumeric characters are encoded as 8 bit data.
* If you want to encode a whole string in 8 bit mode, you can use
* QRcode_encodeString8bit() instead.
*
* Please note that a C string can not contain NUL characters. If your data
* contains NUL, you must use QRcode_encodeData().
*
* \subsection encoding-input Encoding a structured data
* You can construct a structured input data manually. If the structure of the
* input data is known, you can use this way.
* At first, create a ::QRinput object by QRinput_new(). Then add input data
* to the QRinput object by QRinput_append(). Finally call QRcode_encodeInput()
* to encode the QRinput data.
* You can reuse the QRinput data again to encode it in other symbols with
* different parameters.
*
* \section result Result
* The encoded symbol is resulted as a ::QRcode object. It will contain
* its version number, width of the symbol and an array represents the symbol.
* See ::QRcode for the details. You can free the object by QRcode_free().
*
* Please note that the version of the result may be larger than specified.
* In such cases, the input data would be too large to be encoded in a
* symbol of the specified version.
*
* \section structured Structured append
* Libqrencode can generate "Structured-appended" symbols that enables to split
* a large data set into mulitple QR codes. A QR code reader concatenates
* multiple QR code symbols into a string.
* Just like QRcode_encodeString(), you can use QRcode_encodeStringStructured()
* to generate structured-appended symbols. This functions returns an instance
* of ::QRcode_List. The returned list is a singly-linked list of QRcode: you
* can retrieve each QR code in this way:
*
* \code
* QRcode_List *qrcodes;
* QRcode_List *entry;
* QRcode *qrcode;
*
* qrcodes = QRcode_encodeStringStructured(...);
* entry = qrcodes;
* while(entry != NULL) {
* qrcode = entry->code;
* // do something
* entry = entry->next;
* }
* QRcode_List_free(entry);
* \endcode
*
* Instead of using auto-parsing functions, you can construct your own
* structured input. At first, instantiate an object of ::QRinput_Struct
* by calling QRinput_Struct_new(). This object can hold multiple ::QRinput,
* and one QR code is generated for a ::QRinput.
* QRinput_Struct_appendInput() appends a ::QRinput to a ::QRinput_Struct
* object. In order to generate structured-appended symbols, it is required to
* embed headers to each symbol. You can use
* QRinput_Struct_insertStructuredAppendHeaders() to insert appropriate
* headers to each symbol. You should call this function just once before
* encoding symbols.
*/
#ifndef QRENCODE_H
#define QRENCODE_H
#if defined(__cplusplus)
extern "C" {
#endif
/**
* Encoding mode.
*/
typedef enum {
QR_MODE_NUL = -1, ///< Terminator (NUL character). Internal use only
QR_MODE_NUM = 0, ///< Numeric mode
QR_MODE_AN, ///< Alphabet-numeric mode
QR_MODE_8, ///< 8-bit data mode
QR_MODE_KANJI, ///< Kanji (shift-jis) mode
QR_MODE_STRUCTURE, ///< Internal use only
QR_MODE_ECI, ///< ECI mode
QR_MODE_FNC1FIRST, ///< FNC1, first position
QR_MODE_FNC1SECOND, ///< FNC1, second position
} QRencodeMode;
/**
* Level of error correction.
*/
typedef enum {
QR_ECLEVEL_L = 0, ///< lowest
QR_ECLEVEL_M,
QR_ECLEVEL_Q,
QR_ECLEVEL_H ///< highest
} QRecLevel;
/**
* Maximum version (size) of QR-code symbol.
*/
#define QRSPEC_VERSION_MAX 40
/**
* Maximum version (size) of QR-code symbol.
*/
#define MQRSPEC_VERSION_MAX 4
/******************************************************************************
* Input data (qrinput.c)
*****************************************************************************/
/**
* Singly linked list to contain input strings. An instance of this class
* contains its version and error correction level too. It is required to
* set them by QRinput_setVersion() and QRinput_setErrorCorrectionLevel(),
* or use QRinput_new2() to instantiate an object.
*/
typedef struct _QRinput QRinput;
/**
* Instantiate an input data object. The version is set to 0 (auto-select)
* and the error correction level is set to QR_ECLEVEL_L.
* @return an input object (initialized). On error, NULL is returned and errno
* is set to indicate the error.
* @throw ENOMEM unable to allocate memory.
*/
extern QRinput *QRinput_new(void);
/**
* Instantiate an input data object.
* @param version version number.
* @param level Error correction level.
* @return an input object (initialized). On error, NULL is returned and errno
* is set to indicate the error.
* @throw ENOMEM unable to allocate memory for input objects.
* @throw EINVAL invalid arguments.
*/
extern QRinput *QRinput_new2(int version, QRecLevel level);
/**
* Instantiate an input data object. Object's Micro QR Code flag is set.
* Unlike with full-sized QR Code, version number must be specified (>0).
* @param version version number (1--4).
* @param level Error correction level.
* @return an input object (initialized). On error, NULL is returned and errno
* is set to indicate the error.
* @throw ENOMEM unable to allocate memory for input objects.
* @throw EINVAL invalid arguments.
*/
extern QRinput *QRinput_newMQR(int version, QRecLevel level);
/**
* Append data to an input object.
* The data is copied and appended to the input object.
* @param input input object.
* @param mode encoding mode.
* @param size size of data (byte).
* @param data a pointer to the memory area of the input data.
* @retval 0 success.
* @retval -1 an error occurred and errno is set to indeicate the error.
* See Execptions for the details.
* @throw ENOMEM unable to allocate memory.
* @throw EINVAL input data is invalid.
*
*/
extern int QRinput_append(QRinput *input, QRencodeMode mode, int size, const unsigned char *data);
/**
* Append ECI header.
* @param input input object.
* @param ecinum ECI indicator number (0 - 999999)
* @retval 0 success.
* @retval -1 an error occurred and errno is set to indeicate the error.
* See Execptions for the details.
* @throw ENOMEM unable to allocate memory.
* @throw EINVAL input data is invalid.
*
*/
extern int QRinput_appendECIheader(QRinput *input, unsigned int ecinum);
/**
* Get current version.
* @param input input object.
* @return current version.
*/
extern int QRinput_getVersion(QRinput *input);
/**
* Set version of the QR code that is to be encoded.
* This function cannot be applied to Micro QR Code.
* @param input input object.
* @param version version number (0 = auto)
* @retval 0 success.
* @retval -1 invalid argument.
*/
extern int QRinput_setVersion(QRinput *input, int version);
/**
* Get current error correction level.
* @param input input object.
* @return Current error correcntion level.
*/
extern QRecLevel QRinput_getErrorCorrectionLevel(QRinput *input);
/**
* Set error correction level of the QR code that is to be encoded.
* This function cannot be applied to Micro QR Code.
* @param input input object.
* @param level Error correction level.
* @retval 0 success.
* @retval -1 invalid argument.
*/
extern int QRinput_setErrorCorrectionLevel(QRinput *input, QRecLevel level);
/**
* Set version and error correction level of the QR code at once.
* This function is recommened for Micro QR Code.
* @param input input object.
* @param version version number (0 = auto)
* @param level Error correction level.
* @retval 0 success.
* @retval -1 invalid argument.
*/
extern int QRinput_setVersionAndErrorCorrectionLevel(QRinput *input, int version, QRecLevel level);
/**
* Free the input object.
* All of data chunks in the input object are freed too.
* @param input input object.
*/
extern void QRinput_free(QRinput *input);
/**
* Validate the input data.
* @param mode encoding mode.
* @param size size of data (byte).
* @param data a pointer to the memory area of the input data.
* @retval 0 success.
* @retval -1 invalid arguments.
*/
extern int QRinput_check(QRencodeMode mode, int size, const unsigned char *data);
/**
* Set of QRinput for structured symbols.
*/
typedef struct _QRinput_Struct QRinput_Struct;
/**
* Instantiate a set of input data object.
* @return an instance of QRinput_Struct. On error, NULL is returned and errno
* is set to indicate the error.
* @throw ENOMEM unable to allocate memory.
*/
extern QRinput_Struct *QRinput_Struct_new(void);
/**
* Set parity of structured symbols.
* @param s structured input object.
* @param parity parity of s.
*/
extern void QRinput_Struct_setParity(QRinput_Struct *s, unsigned char parity);
/**
* Append a QRinput object to the set. QRinput created by QRinput_newMQR()
* will be rejected.
* @warning never append the same QRinput object twice or more.
* @param s structured input object.
* @param input an input object.
* @retval >0 number of input objects in the structure.
* @retval -1 an error occurred. See Exceptions for the details.
* @throw ENOMEM unable to allocate memory.
* @throw EINVAL invalid arguments.
*/
extern int QRinput_Struct_appendInput(QRinput_Struct *s, QRinput *input);
/**
* Free all of QRinput in the set.
* @param s a structured input object.
*/
extern void QRinput_Struct_free(QRinput_Struct *s);
/**
* Split a QRinput to QRinput_Struct. It calculates a parity, set it, then
* insert structured-append headers. QRinput created by QRinput_newMQR() will
* be rejected.
* @param input input object. Version number and error correction level must be
* set.
* @return a set of input data. On error, NULL is returned, and errno is set
* to indicate the error. See Exceptions for the details.
* @throw ERANGE input data is too large.
* @throw EINVAL invalid input data.
* @throw ENOMEM unable to allocate memory.
*/
extern QRinput_Struct *QRinput_splitQRinputToStruct(QRinput *input);
/**
* Insert structured-append headers to the input structure. It calculates
* a parity and set it if the parity is not set yet.
* @param s input structure
* @retval 0 success.
* @retval -1 an error occurred and errno is set to indeicate the error.
* See Execptions for the details.
* @throw EINVAL invalid input object.
* @throw ENOMEM unable to allocate memory.
*/
extern int QRinput_Struct_insertStructuredAppendHeaders(QRinput_Struct *s);
/**
* Set FNC1-1st position flag.
*/
extern int QRinput_setFNC1First(QRinput *input);
/**
* Set FNC1-2nd position flag and application identifier.
*/
extern int QRinput_setFNC1Second(QRinput *input, unsigned char appid);
/******************************************************************************
* QRcode output (qrencode.c)
*****************************************************************************/
/**
* QRcode class.
* Symbol data is represented as an array contains width*width uchars.
* Each uchar represents a module (dot). If the less significant bit of
* the uchar is 1, the corresponding module is black. The other bits are
* meaningless for usual applications, but here its specification is described.
*
* @verbatim
MSB 76543210 LSB
|||||||`- 1=black/0=white
||||||`-- data and ecc code area
|||||`--- format information
||||`---- version information
|||`----- timing pattern
||`------ alignment pattern
|`------- finder pattern and separator
`-------- non-data modules (format, timing, etc.)
@endverbatim
*/
typedef struct {
int version; ///< version of the symbol
int width; ///< width of the symbol
unsigned char *data; ///< symbol data
} QRcode;
/**
* Singly-linked list of QRcode. Used to represent a structured symbols.
* A list is terminated with NULL.
*/
typedef struct _QRcode_List {
QRcode *code;
struct _QRcode_List *next;
} QRcode_List;
/**
* Create a symbol from the input data.
* @warning This function is THREAD UNSAFE when pthread is disabled.
* @param input input data.
* @return an instance of QRcode class. The version of the result QRcode may
* be larger than the designated version. On error, NULL is returned,
* and errno is set to indicate the error. See Exceptions for the
* details.
* @throw EINVAL invalid input object.
* @throw ENOMEM unable to allocate memory for input objects.
*/
extern QRcode *QRcode_encodeInput(QRinput *input);
/**
* Create a symbol from the string. The library automatically parses the input
* string and encodes in a QR Code symbol.
* @warning This function is THREAD UNSAFE when pthread is disabled.
* @param string input string. It must be NUL terminated.
* @param version version of the symbol. If 0, the library chooses the minimum
* version for the given input data.
* @param level error correction level.
* @param hint tell the library how Japanese Kanji characters should be
* encoded. If QR_MODE_KANJI is given, the library assumes that the
* given string contains Shift-JIS characters and encodes them in
* Kanji-mode. If QR_MODE_8 is given, all of non-alphanumerical
* characters will be encoded as is. If you want to embed UTF-8
* string, choose this. Other mode will cause EINVAL error.
* @param casesensitive case-sensitive(1) or not(0).
* @return an instance of QRcode class. The version of the result QRcode may
* be larger than the designated version. On error, NULL is returned,
* and errno is set to indicate the error. See Exceptions for the
* details.
* @throw EINVAL invalid input object.
* @throw ENOMEM unable to allocate memory for input objects.
* @throw ERANGE input data is too large.
*/
extern QRcode *QRcode_encodeString(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive);
/**
* Same to QRcode_encodeString(), but encode whole data in 8-bit mode.
* @warning This function is THREAD UNSAFE when pthread is disabled.
*/
extern QRcode *QRcode_encodeString8bit(const char *string, int version, QRecLevel level);
/**
* Micro QR Code version of QRcode_encodeString().
* @warning This function is THREAD UNSAFE when pthread is disabled.
*/
extern QRcode *QRcode_encodeStringMQR(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive);
/**
* Micro QR Code version of QRcode_encodeString8bit().
* @warning This function is THREAD UNSAFE when pthread is disabled.
*/
extern QRcode *QRcode_encodeString8bitMQR(const char *string, int version, QRecLevel level);
/**
* Encode byte stream (may include '\0') in 8-bit mode.
* @warning This function is THREAD UNSAFE when pthread is disabled.
* @param size size of the input data.
* @param data input data.
* @param version version of the symbol. If 0, the library chooses the minimum
* version for the given input data.
* @param level error correction level.
* @throw EINVAL invalid input object.
* @throw ENOMEM unable to allocate memory for input objects.
* @throw ERANGE input data is too large.
*/
extern QRcode *QRcode_encodeData(int size, const unsigned char *data, int version, QRecLevel level);
/**
* Micro QR Code version of QRcode_encodeData().
* @warning This function is THREAD UNSAFE when pthread is disabled.
*/
extern QRcode *QRcode_encodeDataMQR(int size, const unsigned char *data, int version, QRecLevel level);
/**
* Free the instance of QRcode class.
* @param qrcode an instance of QRcode class.
*/
extern void QRcode_free(QRcode *qrcode);
/**
* Create structured symbols from the input data.
* @warning This function is THREAD UNSAFE when pthread is disabled.
* @param s input data, structured.
* @return a singly-linked list of QRcode.
*/
extern QRcode_List *QRcode_encodeInputStructured(QRinput_Struct *s);
/**
* Create structured symbols from the string. The library automatically parses
* the input string and encodes in a QR Code symbol.
* @warning This function is THREAD UNSAFE when pthread is disabled.
* @param string input string. It must be NUL terminated.
* @param version version of the symbol.
* @param level error correction level.
* @param hint tell the library how Japanese Kanji characters should be
* encoded. If QR_MODE_KANJI is given, the library assumes that the
* given string contains Shift-JIS characters and encodes them in
* Kanji-mode. If QR_MODE_8 is given, all of non-alphanumerical
* characters will be encoded as is. If you want to embed UTF-8
* string, choose this. Other mode will cause EINVAL error.
* @param casesensitive case-sensitive(1) or not(0).
* @return a singly-linked list of QRcode. On error, NULL is returned, and
* errno is set to indicate the error. See Exceptions for the details.
* @throw EINVAL invalid input object.
* @throw ENOMEM unable to allocate memory for input objects.
*/
extern QRcode_List *QRcode_encodeStringStructured(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive);
/**
* Same to QRcode_encodeStringStructured(), but encode whole data in 8-bit mode.
* @warning This function is THREAD UNSAFE when pthread is disabled.
*/
extern QRcode_List *QRcode_encodeString8bitStructured(const char *string, int version, QRecLevel level);
/**
* Create structured symbols from byte stream (may include '\0'). Wholde data
* are encoded in 8-bit mode.
* @warning This function is THREAD UNSAFE when pthread is disabled.
* @param size size of the input data.
* @param data input dat.
* @param version version of the symbol.
* @param level error correction level.
* @return a singly-linked list of QRcode. On error, NULL is returned, and
* errno is set to indicate the error. See Exceptions for the details.
* @throw EINVAL invalid input object.
* @throw ENOMEM unable to allocate memory for input objects.
*/
extern QRcode_List *QRcode_encodeDataStructured(int size, const unsigned char *data, int version, QRecLevel level);
/**
* Return the number of symbols included in a QRcode_List.
* @param qrlist a head entry of a QRcode_List.
* @return number of symbols in the list.
*/
extern int QRcode_List_size(QRcode_List *qrlist);
/**
* Free the QRcode_List.
* @param qrlist a head entry of a QRcode_List.
*/
extern void QRcode_List_free(QRcode_List *qrlist);
/******************************************************************************
* System utilities
*****************************************************************************/
/**
* Return a string that identifies the library version.
* @param major_version major version number
* @param minor_version minor version number
* @param micro_version micro version number
*/
extern void QRcode_APIVersion(int *major_version, int *minor_version, int *micro_version);
/**
* Return a string that identifies the library version.
* @return a string identifies the library version. The string is held by the
* library. Do NOT free it.
*/
extern char *QRcode_APIVersionString(void);
/**
* @deprecated
*/
#ifndef _MSC_VER
extern void QRcode_clearCache(void) __attribute__ ((deprecated));
#else
extern void QRcode_clearCache(void);
#endif
#if defined(__cplusplus)
}
#endif
#endif /* QRENCODE_H */
@@ -0,0 +1,88 @@
/**
* qrencode - QR Code encoder
*
* Header for test use
* Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
*
* This library 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 2.1 of the License, or any later version.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef QRENCODE_INNER_H
#define QRENCODE_INNER_H
/**
* This header file includes definitions for test use.
*/
/******************************************************************************
* Raw code
*****************************************************************************/
typedef struct {
int dataLength;
int eccLength;
unsigned char *data;
unsigned char *ecc;
} RSblock;
typedef struct {
int version;
int dataLength;
int eccLength;
unsigned char *datacode;
unsigned char *ecccode;
int b1;
int blocks;
RSblock *rsblock;
int count;
} QRRawCode;
extern QRRawCode *QRraw_new(QRinput *input);
extern unsigned char QRraw_getCode(QRRawCode *raw);
extern void QRraw_free(QRRawCode *raw);
/******************************************************************************
* Raw code for Micro QR Code
*****************************************************************************/
typedef struct {
int version;
int dataLength;
int eccLength;
unsigned char *datacode;
unsigned char *ecccode;
RSblock *rsblock;
int oddbits;
int count;
} MQRRawCode;
extern MQRRawCode *MQRraw_new(QRinput *input);
extern unsigned char MQRraw_getCode(MQRRawCode *raw);
extern void MQRraw_free(MQRRawCode *raw);
/******************************************************************************
* Frame filling
*****************************************************************************/
extern unsigned char *FrameFiller_test(int version);
extern unsigned char *FrameFiller_testMQR(int version);
/******************************************************************************
* QR-code encoding
*****************************************************************************/
extern QRcode *QRcode_encodeMask(QRinput *input, int mask);
extern QRcode *QRcode_encodeMaskMQR(QRinput *input, int mask);
extern QRcode *QRcode_new(int version, int width, unsigned char *data);
#endif /* QRENCODE_INNER_H */
@@ -0,0 +1,123 @@
/*
* qrencode - QR Code encoder
*
* Input data chunk class
* Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
*
* This library 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 2.1 of the License, or any later version.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef QRINPUT_H
#define QRINPUT_H
#include "qrencode.h"
#include "bitstream.h"
int QRinput_isSplittableMode(QRencodeMode mode);
/******************************************************************************
* Entry of input data
*****************************************************************************/
typedef struct _QRinput_List QRinput_List;
struct _QRinput_List {
QRencodeMode mode;
int size; ///< Size of data chunk (byte).
unsigned char *data; ///< Data chunk.
BitStream *bstream;
QRinput_List *next;
};
/******************************************************************************
* Input Data
*****************************************************************************/
struct _QRinput {
int version;
QRecLevel level;
QRinput_List *head;
QRinput_List *tail;
int mqr;
int fnc1;
unsigned char appid;
};
/******************************************************************************
* Structured append input data
*****************************************************************************/
typedef struct _QRinput_InputList QRinput_InputList;
struct _QRinput_InputList {
QRinput *input;
QRinput_InputList *next;
};
struct _QRinput_Struct {
int size; ///< number of structured symbols
int parity;
QRinput_InputList *head;
QRinput_InputList *tail;
};
/**
* Pack all bit streams padding bits into a byte array.
* @param input input data.
* @return padded merged byte stream
*/
extern unsigned char *QRinput_getByteStream(QRinput *input);
extern int QRinput_estimateBitsModeNum(int size);
extern int QRinput_estimateBitsModeAn(int size);
extern int QRinput_estimateBitsMode8(int size);
extern int QRinput_estimateBitsModeKanji(int size);
extern QRinput *QRinput_dup(QRinput *input);
extern const signed char QRinput_anTable[128];
/**
* Look up the alphabet-numeric convesion table (see JIS X0510:2004, pp.19).
* @param __c__ character
* @return value
*/
#define QRinput_lookAnTable(__c__) \
((__c__ & 0x80)?-1:QRinput_anTable[(int)__c__])
/**
* Length of a standard mode indicator in bits.
*/
#define MODE_INDICATOR_SIZE 4
/**
* Length of a segment of structured-append header.
*/
#define STRUCTURE_HEADER_SIZE 20
/**
* Maximum number of symbols in a set of structured-appended symbols.
*/
#define MAX_STRUCTURED_SYMBOLS 16
#ifdef WITH_TESTS
extern int QRinput_mergeBitStream(QRinput *input, BitStream *bstream);
extern int QRinput_getBitStream(QRinput *input, BitStream *bstream);
extern int QRinput_estimateBitStreamSize(QRinput *input, int version);
extern int QRinput_splitEntry(QRinput_List *entry, int bytes);
extern int QRinput_lengthOfCode(QRencodeMode mode, int version, int bits);
extern int QRinput_insertStructuredAppendHeader(QRinput *input, int size, int index, unsigned char parity);
#endif
#endif /* QRINPUT_H */
@@ -0,0 +1,174 @@
/*
* qrencode - QR Code encoder
*
* QR Code specification in convenient format.
* Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
*
* This library 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 2.1 of the License, or any later version.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef QRSPEC_H
#define QRSPEC_H
#include "qrencode.h"
/******************************************************************************
* Version and capacity
*****************************************************************************/
/**
* Maximum width of a symbol
*/
#define QRSPEC_WIDTH_MAX 177
/**
* Return maximum data code length (bytes) for the version.
* @param version version of the symbol
* @param level error correction level
* @return maximum size (bytes)
*/
extern int QRspec_getDataLength(int version, QRecLevel level);
/**
* Return maximum error correction code length (bytes) for the version.
* @param version version of the symbol
* @param level error correction level
* @return ECC size (bytes)
*/
extern int QRspec_getECCLength(int version, QRecLevel level);
/**
* Return a version number that satisfies the input code length.
* @param size input code length (byte)
* @param level error correction level
* @return version number
*/
extern int QRspec_getMinimumVersion(int size, QRecLevel level);
/**
* Return the width of the symbol for the version.
* @param version vesion of the symbol
* @return width of the symbol
*/
extern int QRspec_getWidth(int version);
/**
* Return the numer of remainder bits.
* @param version vesion of the symbol
* @return number of remainder bits
*/
extern int QRspec_getRemainder(int version);
/******************************************************************************
* Length indicator
*****************************************************************************/
/**
* Return the size of length indicator for the mode and version.
* @param mode encode mode
* @param version vesion of the symbol
* @return the size of the appropriate length indicator (bits).
*/
extern int QRspec_lengthIndicator(QRencodeMode mode, int version);
/**
* Return the maximum length for the mode and version.
* @param mode encode mode
* @param version vesion of the symbol
* @return the maximum length (bytes)
*/
extern int QRspec_maximumWords(QRencodeMode mode, int version);
/******************************************************************************
* Error correction code
*****************************************************************************/
/**
* Return an array of ECC specification.
* @param version version of the symbol
* @param level error correction level
* @param spec an array of ECC specification contains as following:
* {# of type1 blocks, # of data code, # of ecc code,
* # of type2 blocks, # of data code}
*/
void QRspec_getEccSpec(int version, QRecLevel level, int spec[5]);
#define QRspec_rsBlockNum(__spec__) (__spec__[0] + __spec__[3])
#define QRspec_rsBlockNum1(__spec__) (__spec__[0])
#define QRspec_rsDataCodes1(__spec__) (__spec__[1])
#define QRspec_rsEccCodes1(__spec__) (__spec__[2])
#define QRspec_rsBlockNum2(__spec__) (__spec__[3])
#define QRspec_rsDataCodes2(__spec__) (__spec__[4])
#define QRspec_rsEccCodes2(__spec__) (__spec__[2])
#define QRspec_rsDataLength(__spec__) \
((QRspec_rsBlockNum1(__spec__) * QRspec_rsDataCodes1(__spec__)) + \
(QRspec_rsBlockNum2(__spec__) * QRspec_rsDataCodes2(__spec__)))
#define QRspec_rsEccLength(__spec__) \
(QRspec_rsBlockNum(__spec__) * QRspec_rsEccCodes1(__spec__))
/******************************************************************************
* Version information pattern
*****************************************************************************/
/**
* Return BCH encoded version information pattern that is used for the symbol
* of version 7 or greater. Use lower 18 bits.
* @param version version of the symbol
* @return BCH encoded version information pattern
*/
extern unsigned int QRspec_getVersionPattern(int version);
/******************************************************************************
* Format information
*****************************************************************************/
/**
* Return BCH encoded format information pattern.
* @param mask mask number
* @param level error correction level
* @return BCH encoded format information pattern
*/
extern unsigned int QRspec_getFormatInfo(int mask, QRecLevel level);
/******************************************************************************
* Frame
*****************************************************************************/
/**
* Return a copy of initialized frame.
* @param version version of the symbol
* @return Array of unsigned char. You can free it by free().
*/
extern unsigned char *QRspec_newFrame(int version);
/******************************************************************************
* Mode indicator
*****************************************************************************/
/**
* Mode indicator. See Table 2 of JIS X0510:2004, pp.16.
*/
#define QRSPEC_MODEID_ECI 7
#define QRSPEC_MODEID_NUM 1
#define QRSPEC_MODEID_AN 2
#define QRSPEC_MODEID_8 4
#define QRSPEC_MODEID_KANJI 8
#define QRSPEC_MODEID_FNC1FIRST 5
#define QRSPEC_MODEID_FNC1SECOND 9
#define QRSPEC_MODEID_STRUCTURE 3
#define QRSPEC_MODEID_TERMINATOR 0
#endif /* QRSPEC_H */
@@ -0,0 +1,31 @@
/*
* qrencode - QR Code encoder
*
* Reed solomon error correction code encoder specialized for QR code.
* This code is rewritten by Kentaro Fukuchi, referring to the FEC library
* developed by Phil Karn (KA9Q).
*
* Copyright (C) 2002, 2003, 2004, 2006 Phil Karn, KA9Q
* Copyright (C) 2014-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
*
* This library 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 2.1 of the License, or any later version.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef RSECC_H
#define RSECC_H
extern int RSECC_encode(size_t data_length, size_t ecc_length, const unsigned char *data, unsigned char *ecc);
#endif /* RSECC_H */
@@ -0,0 +1,47 @@
/*
* qrencode - QR Code encoder
*
* Input data splitter.
* Copyright (C) 2006-2017 Kentaro Fukuchi <kentaro@fukuchi.org>
*
* The following data / specifications are taken from
* "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004)
* or
* "Automatic identification and data capture techniques --
* QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006)
*
* This library 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 2.1 of the License, or any later version.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef SPLIT_H
#define SPLIT_H
#include "qrencode.h"
/**
* Split the input string (null terminated) into QRinput.
* @param string input string
* @param hint give QR_MODE_KANJI if the input string contains Kanji character encoded in Shift-JIS. If not, give QR_MODE_8.
* @param casesensitive 0 for case-insensitive encoding (all alphabet characters are replaced to UPPER-CASE CHARACTERS.
* @retval 0 success.
* @retval -1 an error occurred. errno is set to indicate the error. See
* Exceptions for the details.
* @throw EINVAL invalid input object.
* @throw ENOMEM unable to allocate memory for input objects.
*/
extern int Split_splitStringToQRinput(const char *string, QRinput *input,
QRencodeMode hint, int casesensitive);
#endif /* SPLIT_H */
+1 -1
View File
@@ -8,7 +8,7 @@ public class MKCC : ModuleRules
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "QRcode" });
PrivateDependencyModuleNames.AddRange(new string[] { });