office-gobmx/include/vcl/imaprect.hxx
Mike Kaganski acbb6c98ae tdf#160867: restore HTML map export for text hyperlinks in frames
The most exciting was to discover that this functionality was actually
already implemented prior to 2001, and then accidentally dropped, and
nobody noticed, until Noel did his great cleanups, and made an amazing
investigation in commit ed2ae3c3bb (remove
dead SwNoteURL, 2018-03-14). The detailed commit message made my task
so much easier: I knew where and what to restore.

So this change restores relevant pieces removed over the time in commits
* 1b666235f6 (loplugin:singlevalfields
  improve copy constructor check, 2018-01-03),
* be8c414567 (loplugin:unusedmethods also
  check for functions returning bool, 2018-01-19),
* 73139fe600 (loplugin:unusedmethods,
  2018-01-20)
* bb7ade140d (loplugin:unusedmethods,
  2018-03-08),
* ed2ae3c3bb (remove dead SwNoteURL,
  2018-03-14),
* fd1cfd25b4 (PortionType::Url is unused,
  2019-01-18).

It re-implements the functionality accidentally removed in commit
da7671e4f7 (Opt.(FME): The new attribute
handler makes a lot of code superfluous, 2001-03-15), moving it into
SwAttrHandler, which replaced the ChgFnt in SwTxtAttr.

It also fixes the code writing the HTML image map, to output valid HTML.

And finally, it adds a unit test, to avoid repeating the story :-)

Change-Id: I72ae3cf30f0e9689f50a2c877e1622e4ae46de49
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166924
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-04-30 19:11:32 +02:00

65 lines
2.6 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#pragma once
#include <config_options.h>
#include <vcl/dllapi.h>
#include <vcl/imapobj.hxx>
#include <tools/gen.hxx>
class Fraction;
class VCL_DLLPUBLIC IMapRectangleObject final : public IMapObject
{
tools::Rectangle aRect;
SAL_DLLPRIVATE void ImpConstruct( const tools::Rectangle& rRect, bool bPixel );
// binary import/export
virtual void WriteIMapObject( SvStream& rOStm ) const override;
virtual void ReadIMapObject( SvStream& rIStm ) override;
public:
IMapRectangleObject() {};
IMapRectangleObject( const tools::Rectangle& rRect,
const OUString& rURL,
const OUString& rAltText,
const OUString& rDesc,
const OUString& rTarget,
const OUString& rName,
bool bActive = true,
bool bPixelCoords = true );
virtual IMapObjectType GetType() const override;
virtual bool IsHit( const Point& rPoint ) const override;
tools::Rectangle GetRectangle( bool bPixelCoords = true ) const;
void Scale( const Fraction& rFractX, const Fraction& rFracY );
using IMapObject::IsEqual;
bool IsEqual( const IMapRectangleObject& rEqObj ) const;
// import/export
void WriteCERN( SvStream& rOStm ) const;
void WriteNCSA( SvStream& rOStm ) const;
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */