5#include "xfa/fde/cfde_textout.h"
9#include "build/build_config.h"
10#include "core/fdrm/fx_crypt.h"
11#include "core/fxcrt/bytestring.h"
12#include "core/fxcrt/fx_codepage.h"
13#include "core/fxcrt/fx_coordinates.h"
14#include "core/fxcrt/retain_ptr.h"
15#include "core/fxge/cfx_defaultrenderdevice.h"
16#include "core/fxge/cfx_glyphcache.h"
17#include "core/fxge/dib/cfx_dibitmap.h"
18#include "testing/gtest/include/gtest/gtest.h"
19#include "testing/utils/hash.h"
20#include "xfa/fgas/font/cfgas_fontmgr.h"
21#include "xfa/fgas/font/cfgas_gefont.h"
22#include "xfa/fgas/font/cfgas_gemodule.h"
32#if defined(PDF_USE_SKIA)
33 CFX_GlyphCache::InitializeGlobals();
35 CFX_Size bitmap_size = GetBitmapSize();
36 bitmap_ = MakeRetain<CFX_DIBitmap>();
37 ASSERT_TRUE(bitmap_->Create(bitmap_size.width, bitmap_size.height,
38 FXDIB_Format::kBgra));
40 device_ = std::make_unique<CFX_DefaultRenderDevice>();
41 device_->Attach(bitmap_);
46 text_out_ = std::make_unique<CFDE_TextOut>();
47 text_out_->SetFont(font_);
48 text_out_->SetFontSize(12.0f);
59#if defined(PDF_USE_SKIA)
60 CFX_GlyphCache::DestroyGlobals();
65 const wchar_t kFontFamily[] = L"Arimo Bold";
66 return CFGAS_GEFont::LoadFont(kFontFamily, 0,
73 static const char kEmptyBitmapChecksum[] =
74 "a042237c5493fdb9656b94a83608d11a";
75 return kEmptyBitmapChecksum;
78 CFX_DefaultRenderDevice*
device() {
return device_.get(); }
83 for (
int i = 0; i < bitmap_->GetHeight(); ++i)
84 CRYPT_MD5Update(&context, bitmap_->GetScanline(i));
86 CRYPT_MD5Finish(&context, digest);
92 std::unique_ptr<CFX_DefaultRenderDevice> device_;
94 std::unique_ptr<CFDE_TextOut> text_out_;
98 text_out().DrawLogicText(device(), L"foo",
CFX_RectF(0
, 0
, 2100
, 100
));
99 const char* checksum = []() {
101 if (CFX_DefaultRenderDevice::UseSkiaRenderer()) {
102 return "bc1f736237b08d13db06c09f6becc9f7";
105 return "b26f1c171fcdbf185823364185adacf0";
107 EXPECT_EQ(checksum, GetBitmapChecksum());
111 text_out().DrawLogicText(device(), L"foo",
CFX_RectF());
112 EXPECT_EQ(GetEmptyBitmapChecksum(), GetBitmapChecksum());
115#if !BUILDFLAG(IS_WIN)
133 "101745f76351fd5d916bf3817b71563c";
139 return "6181929583fd7651169306852397806f";
141 return "268b71a8660b51e31c6bf30fc7ff1e08";
152 static const wchar_t kText[] =
153 L"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"
154 L"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSssssssssss"
155 L"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"
156 L"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"
157 L"sssssssssssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnn"
159 L"Sssssssssssssssssss"
174 static const wchar_t kText[] =
175 L"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"
176 L"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSssssssssss"
177 L"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"
178 L"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"
179 L"sssssssssssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnn"
181 L"Sssssssssssssssssss"
fxcrt::ByteString ByteString
constexpr CFX_RectF()=default
constexpr CFX_RectF(float dst_left, float dst_top, float dst_width, float dst_height)
virtual RetainPtr< CFGAS_GEFont > LoadFont()
ByteString GetBitmapChecksum()
~CFDETextOutTest() override=default
CFDE_TextOut & text_out()
CFX_DefaultRenderDevice * device()
virtual CFX_Size GetBitmapSize()
CFDETextOutTest()=default
virtual const char * GetEmptyBitmapChecksum()
CFX_STemplate< int32_t > CFX_Size
CRYPT_md5_context CRYPT_MD5Start()
std::string CryptToBase16(const uint8_t *digest)
TEST_F(CFDETextOutTest, DrawLogicTextBasic)