upload zunicode
This commit is contained in:
parent
09c43d4a03
commit
1b3b5ef32b
6
.idea/encodings.xml
generated
Normal file
6
.idea/encodings.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding">
|
||||||
|
<file url="file://$PROJECT_DIR$/src/zunicode/file/main.cpp" charset="ISO-8859-1" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
2
go.mod
2
go.mod
@ -3,7 +3,9 @@ module zlib
|
|||||||
go 1.20
|
go 1.20
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 // indirect
|
||||||
github.com/benbjohnson/clock v1.3.0 // indirect
|
github.com/benbjohnson/clock v1.3.0 // indirect
|
||||||
|
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d // indirect
|
||||||
go.uber.org/multierr v1.10.0 // indirect
|
go.uber.org/multierr v1.10.0 // indirect
|
||||||
go.uber.org/zap v1.25.0 // indirect
|
go.uber.org/zap v1.25.0 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
4
go.sum
4
go.sum
@ -1,7 +1,11 @@
|
|||||||
|
github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 h1:OYA+5W64v3OgClL+IrOD63t4i/RW7RqrAVl9LTZ9UqQ=
|
||||||
|
github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394/go.mod h1:Q8n74mJTIgjX4RBBcHnJ05h//6/k6foqmgE45jTQtxg=
|
||||||
github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
|
github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
|
||||||
github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7AwssoOcM/tq5JjjG2yYOc8odClEiXA=
|
||||||
|
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
|
||||||
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||||
go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk=
|
go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk=
|
||||||
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
|
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
|
||||||
|
|||||||
@ -4,12 +4,13 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"zlib/src/zlog"
|
"zlib/src/zlog"
|
||||||
|
"zlib/src/zos"
|
||||||
)
|
)
|
||||||
|
|
||||||
type FFileArchive struct {
|
type FFileArchive struct {
|
||||||
pos, start, stop, size int
|
pos, start, stop, size int
|
||||||
swapBytes bool
|
swapBytes bool
|
||||||
reader FReader
|
reader zos.FReader
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ar *FFileArchive) SwapStructBytes(e any) {
|
func (ar *FFileArchive) SwapStructBytes(e any) {
|
||||||
@ -27,7 +28,7 @@ func NewFileArchive(filename string) *FFileArchive {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
s, _ := f.Stat()
|
s, _ := f.Stat()
|
||||||
io := NewReader(f)
|
io := zos.NewReader(f)
|
||||||
return &FFileArchive{
|
return &FFileArchive{
|
||||||
size: int(s.Size()),
|
size: int(s.Size()),
|
||||||
stop: -1,
|
stop: -1,
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package core
|
package zos
|
||||||
|
|
||||||
import "errors"
|
import "errors"
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package core
|
package zos
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
33
src/zunicode/file/00Window.h
Normal file
33
src/zunicode/file/00Window.h
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <wtypes.h>
|
||||||
|
class Window
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Window(int width, int height, const char* name);
|
||||||
|
HWND GetHWnd() {
|
||||||
|
return hWnd;
|
||||||
|
}
|
||||||
|
static bool ProcessMessages(int& code);
|
||||||
|
private:
|
||||||
|
class WindowClass
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static const char* GetName() noexcept;
|
||||||
|
static HINSTANCE GetInstance() noexcept;
|
||||||
|
private:
|
||||||
|
WindowClass() noexcept;
|
||||||
|
~WindowClass();
|
||||||
|
WindowClass(const WindowClass&) = delete;
|
||||||
|
WindowClass& operator=(const WindowClass&) = delete;
|
||||||
|
static constexpr const char* wndClassName = "MainWnd";
|
||||||
|
static WindowClass wndClass;
|
||||||
|
HINSTANCE hInst;
|
||||||
|
};
|
||||||
|
private:
|
||||||
|
static LRESULT CALLBACK HandleMsgSetup(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) noexcept;
|
||||||
|
static LRESULT CALLBACK HandleMsgThunk(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) noexcept;
|
||||||
|
LRESULT HandleMsg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) noexcept;
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
HWND hWnd;
|
||||||
|
};
|
||||||
94
src/zunicode/file/01.cpp
Normal file
94
src/zunicode/file/01.cpp
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
#include "01 Instance and Devices/03 Connecting with a Vulkan Loader library.h"
|
||||||
|
#include "01 Instance and Devices/05 Loading function exported from a Vulkan Loader library.h"
|
||||||
|
#include "01 Instance and Devices/06 Loading global-level functions.h"
|
||||||
|
#include "01 Instance and Devices/07 Checking available Instance extensions.h"
|
||||||
|
#include "01 Instance and Devices/08 Creating a Vulkan Instance.h"
|
||||||
|
#include "01 Instance and Devices/09 Loading instance-level functions.h"
|
||||||
|
#include "01 Instance and Devices/10 Enumerating available physical devices.h"
|
||||||
|
#include "01 Instance and Devices/11 Checking available device extensions.h"
|
||||||
|
#include <01 Instance and Devices/12 Getting features and properties of a physical device.h>
|
||||||
|
#include <01 Instance and Devices/13 Checking available queue families and their properties.h>
|
||||||
|
#include <01 Instance and Devices/14 Selecting index of a queue family with desired capabilities.h>
|
||||||
|
#include <01 Instance and Devices/15 Creating a logical device.h>
|
||||||
|
#include <01 Instance and Devices/16 Loading device-level functions.h>
|
||||||
|
#include <01 Instance and Devices/17 Getting a device queue.h>
|
||||||
|
#include <01 Instance and Devices/18 Creating a logical device with geometry shaders and graphics queue.h>
|
||||||
|
#include <01 Instance and Devices/19 Destroying a logical device.h>
|
||||||
|
#include <01 Instance and Devices/20 Destroying a Vulkan Instance.h>
|
||||||
|
#include <01 Instance and Devices/21 Releasing a Vulkan Loader library.h>
|
||||||
|
using namespace VulkanCookbook;
|
||||||
|
int main01() {
|
||||||
|
//加载dll
|
||||||
|
LIBRARY_TYPE vulkan_library;
|
||||||
|
ConnectWithVulkanLoaderLibrary(vulkan_library);
|
||||||
|
|
||||||
|
|
||||||
|
//加载vulkan接口
|
||||||
|
LoadFunctionExportedFromVulkanLoaderLibrary(vulkan_library);
|
||||||
|
|
||||||
|
|
||||||
|
//调用vulkan接口,加载全局函数指针
|
||||||
|
LoadGlobalLevelFunctions();
|
||||||
|
{
|
||||||
|
//调用全局函数指针,检查实例扩展
|
||||||
|
std::vector<VkExtensionProperties> available_extensions;
|
||||||
|
CheckAvailableInstanceExtensions(available_extensions);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::vector<char const*> desired_extensions;
|
||||||
|
VkInstance instance;
|
||||||
|
char* application_name = "hello world";
|
||||||
|
//创建实例,依赖实例扩展,需要先检查是否支持
|
||||||
|
CreateVulkanInstance(desired_extensions, application_name, instance);
|
||||||
|
|
||||||
|
|
||||||
|
//调用vulkan接口,加载实例函数指针
|
||||||
|
LoadInstanceLevelFunctions(instance, desired_extensions);
|
||||||
|
//调用实例接口,获取物理设备列表
|
||||||
|
std::vector<VkPhysicalDevice> available_devices;
|
||||||
|
EnumerateAvailablePhysicalDevices(instance, available_devices);
|
||||||
|
VkPhysicalDevice physical_device = available_devices[0];
|
||||||
|
{
|
||||||
|
//调用实例接口,检查物理设备扩展
|
||||||
|
std::vector<VkExtensionProperties> available_extensions;
|
||||||
|
CheckAvailableDeviceExtensions(physical_device, available_extensions);
|
||||||
|
}
|
||||||
|
//调用实例接口,检查物理设备功能
|
||||||
|
VkPhysicalDeviceFeatures device_features;
|
||||||
|
VkPhysicalDeviceProperties device_properties;
|
||||||
|
GetFeaturesAndPropertiesOfPhysicalDevice(physical_device, device_features, device_properties);
|
||||||
|
{
|
||||||
|
//调用实例接口,获取物理设备属性
|
||||||
|
std::vector<VkQueueFamilyProperties> queue_families;
|
||||||
|
CheckAvailableQueueFamiliesAndTheirProperties(physical_device, queue_families);
|
||||||
|
}
|
||||||
|
//调用实例接口,获取命令队列信息
|
||||||
|
uint32_t graphics_queue_family_index, compute_queue_family_index;
|
||||||
|
SelectIndexOfQueueFamilyWithDesiredCapabilities(physical_device, VK_QUEUE_GRAPHICS_BIT, graphics_queue_family_index);
|
||||||
|
SelectIndexOfQueueFamilyWithDesiredCapabilities(physical_device, VK_QUEUE_COMPUTE_BIT, compute_queue_family_index);
|
||||||
|
std::vector<QueueInfo> requested_queues = { { graphics_queue_family_index, { 1.0f } } };
|
||||||
|
if (graphics_queue_family_index != compute_queue_family_index) {
|
||||||
|
requested_queues.push_back({ compute_queue_family_index, { 1.0f } });
|
||||||
|
}
|
||||||
|
//调用实例接口,创建逻辑设备,需要检查物理设备扩展,功能,命令队列
|
||||||
|
VkDevice logical_device;
|
||||||
|
CreateLogicalDevice(physical_device, requested_queues, {}, &device_features, logical_device);
|
||||||
|
|
||||||
|
|
||||||
|
//调用vulkan接口,加载设备函数指针
|
||||||
|
LoadDeviceLevelFunctions(logical_device, desired_extensions);
|
||||||
|
//调用设备接口,获取命令队列
|
||||||
|
VkQueue graphics_queue, compute_queue;
|
||||||
|
GetDeviceQueue(logical_device, graphics_queue_family_index, 0, graphics_queue);
|
||||||
|
GetDeviceQueue(logical_device, compute_queue_family_index, 0, compute_queue);
|
||||||
|
CreateLogicalDeviceWithGeometryShadersAndGraphicsAndComputeQueues(instance, logical_device, graphics_queue, compute_queue);
|
||||||
|
|
||||||
|
//调用设备接口,销毁逻辑设备
|
||||||
|
DestroyLogicalDevice(logical_device);
|
||||||
|
//调用实例接口,销毁vulkan实例1
|
||||||
|
DestroyVulkanInstance(instance);
|
||||||
|
//调用系统接口,销毁dll
|
||||||
|
ReleaseVulkanLoaderLibrary(vulkan_library);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
41
src/zunicode/file/main.cpp
Normal file
41
src/zunicode/file/main.cpp
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#define VK_USE_PLATFORM_WIN32_KHR 1
|
||||||
|
#include "external/vulkan.h"
|
||||||
|
#include <Window.h>
|
||||||
|
#include "01 Instance and Devices/03 Connecting with a Vulkan Loader library.h"
|
||||||
|
#include "01 Instance and Devices/05 Loading function exported from a Vulkan Loader library.h"
|
||||||
|
#include "01 Instance and Devices/06 Loading global-level functions.h"
|
||||||
|
#include "01 Instance and Devices/07 Checking available Instance extensions.h"
|
||||||
|
#include "02 Image Presentation/02 Creating a presentation surface.h"
|
||||||
|
#include "02 Image Presentation/01 Creating a Vulkan Instance with WSI extensions enabled.h"
|
||||||
|
|
||||||
|
using namespace VulkanCookbook;
|
||||||
|
int main() {
|
||||||
|
//加载dll
|
||||||
|
LIBRARY_TYPE vulkan_library;
|
||||||
|
ConnectWithVulkanLoaderLibrary(vulkan_library);
|
||||||
|
|
||||||
|
//加载vulkan接口
|
||||||
|
LoadFunctionExportedFromVulkanLoaderLibrary(vulkan_library);
|
||||||
|
|
||||||
|
//调用vulkan接口,加载全局函数指针
|
||||||
|
LoadGlobalLevelFunctions();
|
||||||
|
{
|
||||||
|
//调用全局函数指针,检查实例扩展
|
||||||
|
std::vector<VkExtensionProperties> available_extensions;
|
||||||
|
CheckAvailableInstanceExtensions(available_extensions);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<char const*> desired_extensions;
|
||||||
|
char* application_name = "hello world";
|
||||||
|
VkInstance instance;
|
||||||
|
CreateVulkanInstanceWithWsiExtensionsEnabled(desired_extensions, application_name, instance);
|
||||||
|
|
||||||
|
auto pWnd = new Window(600, 800, "Game Window");
|
||||||
|
WindowParameters window_parameters;
|
||||||
|
VkSurfaceKHR presentation_surface;
|
||||||
|
//presentation_surface.
|
||||||
|
CreatePresentationSurface(instance, window_parameters, presentation_surface);
|
||||||
|
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
66
src/zunicode/utf8.go
Normal file
66
src/zunicode/utf8.go
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"github.com/axgle/mahonia"
|
||||||
|
"github.com/saintfish/chardet"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"zlib/src/zlog"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Decoder = mahonia.Decoder
|
||||||
|
|
||||||
|
var decMap = make(map[string]Decoder)
|
||||||
|
|
||||||
|
func parseAllFiles(root string) []string {
|
||||||
|
var files []string
|
||||||
|
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if !info.IsDir() {
|
||||||
|
files = append(files, path)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return files
|
||||||
|
}
|
||||||
|
func getDecoder(name string) Decoder {
|
||||||
|
dec := decMap[name]
|
||||||
|
if dec != nil {
|
||||||
|
return dec
|
||||||
|
}
|
||||||
|
dec = mahonia.NewDecoder(name)
|
||||||
|
decMap[name] = dec
|
||||||
|
return dec
|
||||||
|
}
|
||||||
|
func convertFile(file string) {
|
||||||
|
from, _ := os.ReadFile(file)
|
||||||
|
det := chardet.NewTextDetector()
|
||||||
|
result, err := det.DetectBest(from)
|
||||||
|
if err != nil {
|
||||||
|
zlog.Errorf("error DetectBest: %s", err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if result.Charset == "UTF-8" || result.Confidence < 80 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
dec := getDecoder(result.Charset)
|
||||||
|
to := dec.ConvertString(string(from))
|
||||||
|
f, _ := os.OpenFile(file, os.O_WRONLY, 0777)
|
||||||
|
w := bufio.NewWriter(f)
|
||||||
|
w.WriteString(to)
|
||||||
|
w.Flush()
|
||||||
|
zlog.Infof("%d %s %s", result.Confidence, result.Charset, file)
|
||||||
|
}
|
||||||
|
func main() {
|
||||||
|
root := "F:\\zvulkan\\vulkanLearn\\src"
|
||||||
|
files := parseAllFiles(root)
|
||||||
|
for _, file := range files {
|
||||||
|
convertFile(file)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user